C# cmd命令中带C的字符串单引号(";)

C# cmd命令中带C的字符串单引号(";),c#,string,C#,String,我试图在cmd中执行命令,但命令中的空格有问题。我知道这个问题,通过引用包含空间的零件来解决。我试试这个: string currentDirectory = Directory.GetCurrentDirectory(); Process cmdexe = new Process(); string filename="D:\\new doc.pdf"; cmdexe.StartInfo.FileName = "cmd.exe"; string comm

我试图在cmd中执行命令,但命令中的空格有问题。我知道这个问题,通过引用包含空间的零件来解决。我试试这个:

string currentDirectory = Directory.GetCurrentDirectory();
Process cmdexe = new Process();
string filename="D:\\new doc.pdf";
cmdexe.StartInfo.FileName = "cmd.exe";
string command = string.Format("\"{0}\\pdftotext.exe\" -enc UTF-8 \"{1}\" \"{2}\\123.txt\"", currentDirectory, fileName, currentDirectory);
cmdexe.StartInfo.Arguments = @"/c " + command;
 cmdexe.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
cmdexe.Start();
cmdexe.Close();

例如,输出应该是:
“D:\folder item\pdftotext.exe”-enc UTF-8“D:\\new doc.pdf”“D:\\123.txt”
。这是正确的,但cmd不起作用。
请帮助我找到解决方案。

cmdexe.Start()
之后,您可以立即使用
cmdexe.Close()
,而无需等待进程完成

有关如何监视和等待流程完成的示例,请参见此处:


使用块将流程创建放在
中可能是值得的,这样您就不必调用
.Close()
,但您需要测试是否必须等待流程完成。

“这是正确的,但cmd不起作用。”-请说明它是如何起作用的。您在重复自己@戴问你是否有错误,错误是什么。“不工作”没有告诉我们任何事情。。。。不客气,对不起。我尝试用pdftotext应用程序将pdf转换为文本。没有错误,但pdf NOT convert to text(pdf不转换为文本)表示cmd不适用于此命令。如果没有错误,则与您的命令行格式无关,因为您已将该部分设置为正确的,如图所示。如果这就是问题所在,你会得到类似于“…不被识别为内部或外部命令、可操作程序或批处理文件”的东西。谢谢@B.K。我发现了问题。在cmd的字符串中,命令应该使用一个(\“\”)作为字符串的一部分,我有三个。要解决我的问题,请先将pdftotext复制到Temp,然后使用它。我使用引号只是为了文件名。它不适用于您的解决方案。我认为问题出在命令上。寻找几个工作示例,特别是“运行EXE的C#program”示例。