未运行的进程参数
问题描述:
我想用文本文件启动记事本的本地实例,以尝试在远程连接脚本中最终使用c#cmd行参数。我正在使用System.Diagnostics.Process,但StartInfo.Arguments实际上并没有完全运行并打开记事本实例。未运行的进程参数
var p = new System.Diagnostics.Process();
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.Arguments = @"cd\ start notepad C:\test\testcmdline.txt";
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.UseShellExecute = false;
p.StartInfo.CreateNoWindow = true;
p.Start();
该窗口在根目录打开,它告诉我cd \正在工作,但“开始记事本”似乎没有运行。
我是否缺少关于StartInfo.Arguments结构的内容?
编辑:我想弄清楚如何在远程服务器上运行python脚本,并将其用作在c#中运行cmd中的东西的测试。虽然在记事本中运行它可以,但我不确定该原则是否会延续到远程运行python脚本的最终实现,因此我试图学习如何通过C#中的cmd运行项目。
答
我最终使用了更简单的2参数Process.Start。
string cmdText;
cmdText = @"/C C:\test\testcmdline.txt";
Process.Start("cmd.exe", cmdText);
你真的需要执行多个语句吗?难道你不能简单地使用'notepad.exe'作为FileName并使用'@“C:\ test \ testcmdline.txt”'作为参数吗? – bassfader
这确实有效,但我将其用作模板,以便在连接后通过cmd行在远程服务器上运行python脚本。在cmd上运行似乎是两者之间相当不错的共同点。 – Jaeriko
然后,AFAIK,您需要将进程的RedirectStandardInput设置为true,然后创建一个StreamWriter来将您的各个命令写入到Process.StandardInput流中。在下面的链接中查看最有价值的答案:https://*.com/questions/437419/execute-multiple-command-lines-with-the-same-process-using-net – bassfader