2017-09-25 30 views
0

我想用文本文件启动记事本的本地实例,以尝试在远程连接脚本中最终使用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运行项目。

+1

你真的需要执行多个语句吗?难道你不能简单地使用'notepad.exe'作为FileName并使用'@“C:\ test \ testcmdline.txt”'作为参数吗? – bassfader

+0

这确实有效,但我将其用作模板,以便在连接后通过cmd行在远程服务器上运行python脚本。在cmd上运行似乎是两者之间相当不错的共同点。 – Jaeriko

+1

然后,AFAIK,您需要将进程的RedirectStandardInput设置为true,然后创建一个StreamWriter来将您的各个命令写入到Process.StandardInput流中。在下面的链接中查看最有价值的答案:https://stackoverflow.com/questions/437419/execute-multiple-command-lines-with-the-same-process-using-net – bassfader

回答

0

我最终使用了更简单的2参数Process.Start。

string cmdText; 
cmdText = @"/C C:\test\testcmdline.txt"; 
Process.Start("cmd.exe", cmdText);