在 C# 中将字符串作为批处理文件运行

Lor*_*aka 5 c# windows batch-file

我正在编写一个创建批处理文件然后运行的应用程序:

我知道我可以创建一个批处理文件并运行它, 没有问题。

我想做的是:一旦我创建了创建文件的字符串,有什么方法可以将字符串作为批处理文件执行吗?就像是

string BatchFile = "echo \"bla bla\" \n iperf -c 123  ... ... .. "
Diagnostics.Process.Start(BatchFile);
Run Code Online (Sandbox Code Playgroud)

Per*_*t28 3

您可以使用/c作为可执行文件运行CMD.EXE,并将其余部分作为参数:

Process.Start("cmd.exe", "/c echo \"bla bla\" \n iperf -c 123  ... ... .. ");
Run Code Online (Sandbox Code Playgroud)

  • 这个例子并不像所示的那样工作;它需要用&符号更改所有“\n”换行符:“&” (4认同)
  • 如果它是一个简单的命令或几个命令,那么效果很好。尝试一个真实的、功能性的批处理文件的内容,这根本行不通。 (2认同)
  • @Robert:CMD.EXE 接受的单个命令行的长度是有限制的,而且它相对较短(8196 个字符)。Raymond Chen 在[此处](http://msdn.microsoft.com/en-us/library/bb776871%28v=vs.85%29.aspx) 写了相关内容。引用:“如果您使用 CMD.EXE 命令处理器,那么您还受到 CMD.EXE 施加的 8192 字符命令行长度限制。” 这将从批处理文件中正常执行,但不会作为单个字符串作为参数传递给 CMD.EXE。 (2认同)