从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,然后输入这个命令,替换文件名,它就可以工作了。但是,运行此代码不会产生任何结果

我错过了什么,或者做错了什么?

从c#运行时命令行进程不工作

你不能把所有的东西都传递给cmd。您需要使用/C参数,它将使用这些命令打开一个命令提示符,并在运行完该命令后终止它。尝试将参数更改为

StartInfo.Arguments = "/C soffice --headless --invisible -convert-to pdf "+fn+".ppt";

另一种解决方案是简单地运行进程本身(正如SLaks在评论中建议的那样)。将p.StartInfo.FileName更改为适当的可执行文件,编辑您的参数,然后就可以开始了。这应该是首选的方法,因为它更直接地完成您想要的。