2013-08-02 21 views
4

我试图解决为什么以下功能无法正常工作。停止命令提示从关闭如此迅速

public void RunCmd() 
      { 
       string strCmdText; 
       strCmdText = "/C [enter command stuff here]"; 
       System.Diagnostics.Process.Start("CMD.exe", strCmdText); 
      } 

然而,每当我尝试运行它,或在一些断点扔,命令打开,显示了一个错误,然后关闭真的很快(这么快,我不能读什么)。

有没有办法阻止程序或找出发生了什么?断点似乎没有工作。

当我直接键入命令提示符而不是通过这个c#脚本运行它,它的命令工作正常。

+2

使用/ k而不是/ c,因此窗口不会自动关闭。 –

+0

如何启动'cmd'过程并将'cmdtext'传递给forloop? – Neo

回答

14

尝试:

strCmdText = "/K [enter command stuff here]"; 

/C执行字符串指定的命令,然后终止

/K执行字符串指定的命令,但仍

2

也许尝试添加一个pause命令?

1

有一不同的选项。使用/K将阻止窗口关闭。

您也可以编辑您的命令,在主呼叫后添加SLEEP。例如,以下内容将在退出前等待2秒钟:

public void RunCmd() 
{ 
    string strCmdText = "/C \"[enter command stuff here]\" & \"SLEEP 2\""; 
      System.Diagnostics.Process.Start("CMD.exe", strCmdText); 
} 
0

Process.Start有两个参数:进程名称和传递给进程的参数。 CMD在理解“输入”参数的含义时存在一个问题。如果它不是CMD理解的参数,它会立即退出。

0

cin.get()

等待来自用户的键盘按压。

0

在c:下创建临时文件夹,然后在命令末尾追加“< c:\ temp \ log.txt”。这将输出写入一个文件

0

除了关于使用/ K vs/C创建一个'滞留'shell的提示外,您可能还需要注入一个空的“set”命令来查看哪些环境变量(和路径)在生成的shell中设置。很有可能,在自己的shell会话中成功运行脚本与在衍生shell中失败的脚本之间的差异在于它运行的环境设置。