从c#运行时命令行进程不工作
本文关键字:工作 进程 命令行 运行时 | 更新日期: 2023-09-27 18:18:51
我正在上传一个文件,然后使用服务器端进程来转换它。
这是Visual Studio Web ASP的一部分。. NET web应用程序在asp.net上运行。. NET开发服务器,localhost:8638
string fn = System.IO.Path.GetFileNameWithoutExtension(File1.PostedFile.FileName);
Process p = new Process();
p.StartInfo.WorkingDirectory = Server.MapPath("/Data");
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.Arguments = "soffice --headless --invisible -convert-to pdf "+fn+".ppt";
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.Start();
p.WaitForExit();
我可以在Data
目录下手动打开cmd.exe
,然后输入这个命令,替换文件名,它就可以工作了。但是,运行此代码不会产生任何结果
我错过了什么,或者做错了什么?
你不能把所有的东西都传递给cmd。您需要使用/C参数,它将使用这些命令打开一个命令提示符,并在运行完该命令后终止它。尝试将参数更改为
StartInfo.Arguments = "/C soffice --headless --invisible -convert-to pdf "+fn+".ppt";
另一种解决方案是简单地运行进程本身(正如SLaks在评论中建议的那样)。将p.StartInfo.FileName
更改为适当的可执行文件,编辑您的参数,然后就可以开始了。这应该是首选的方法,因为它更直接地完成您想要的。