怎么用C#运行DOS命令并且不退出DOS窗口?

时间:2022-09-02 20:29:49
Process p = new Process();
          p.StartInfo.FileName = "cmd.exe";
          // 这里是关键点,不用Shell启动/重定向输入/重定向输出/不显示窗口
           p.StartInfo.UseShellExecute = false;
          p.StartInfo.RedirectStandardInput = true;
          p.StartInfo.RedirectStandardOutput = true;
          p.StartInfo.RedirectStandardError = true;
          p.StartInfo.CreateNoWindow = false;
          p.StartInfo.Arguments = "IIsApp /a magnet /r";    //設定程式執行參數
           p.Start();
          MessageBox.Show("ok!");
          string s = p.StandardOutput.ReadToEnd();// 得到cmd.exe的输出
          p.Close();

以上代码该如何改?

15 个解决方案

#1


呵呵。执行start 

#2


p.StartInfo.FileName = "cmd.exe /K";
红色的是答案:
启动 Windows XP 命令解释程序一个新的实例

CMD [/A | /U] [/Q] [/D] [/E:ON | /E:OFF] [/F:ON | /F:OFF] [/V:ON | /V:OFF]
    [[/S] [/C | /K] string]

/C      执行字符串指定的命令然后终断
/K      执行字符串指定的命令但保留

/S      在 /C 或 /K 后修改字符串处理(见下)
/Q      关闭回应
/D      从注册表中停用执行 AutoRun 命令(见下)
/A      使向内部管道或文件命令的输出成为 ANSI
/U      使向内部管道或文件命令的输出成为 Unicode
/T:fg   设置前景/背景颜色(详细信息,请见 COLOR /?)
/E:ON   启用命令扩展(见下)
/E:OFF  停用命令扩展(见下)
/F:ON   启用文件和目录名称完成字符 (见下)
/F:OFF  停用文件和目录名称完成字符(见下)
/V:ON   将 ! 作为定界符启动延缓环境变量扩展。如: /V:ON 会
        允许 !var! 在执行时允许 !var! 扩展变量 var。var 语法
        在输入时扩展变量,这与在一个 FOR 循环内不同。
/V:OFF  停用延缓的环境扩展。

请注意,如果字符串有引号,可以接受用命令分隔符 '&&' 隔开
的多个命令。并且,由于兼容原因,/X 与 /E:ON 相同,/Y 与
/E:OFF 相同,并且 /R 与 /C 相同。忽略任何其他命令行开关。

如果指定了 /C 或 /K,命令行开关后的命令行其余部分将作为命令行处
理;在这种情况下,会使用下列逻辑处理引号字符("):

    1.   如果符合下列所有条件,那么在命令行上的引号字符将被
        保留:

        - 不带 /S 命令行开关
        - 整整两个引号字符
        - 在两个引号字符之间没有特殊字符,特殊字符为下列中的
          一个: <>()@^|
        - 在两个引号字符之间有至少一个空白字符
        - 在两个引号字符之间有至少一个可执行文件的名称。

    2.  否则,老办法是,看第一个字符是否是一个引号字符,如果
        是,舍去开头的字符并删除命令行上 的最后一个引号字符,
        保留最后一个引号字符之后的文字。

如果 /D 未在命令行上被指定,当 CMD.EXE 开始时,它会寻找
以下 REG_SZ/REG_EXPAND_SZ 注册表变量。如果其中一个或
两个都存在,这两个变量会先被执行。

    HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\AutoRun

        和/或

    HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRun

命令扩展是按默认值启用的。您也可以使用 /E:OFF,为某一
特定调用而停用扩展。您可以在机器上和/或用户登录会话上
启用或停用 CMD.EXE 所有调用的扩展,这要通过设置使用
REGEDT32.EXE 的注册表中的一个或两个 REG_DWORD 值:

    HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\EnableExtensions

        和/或

    HKEY_CURRENT_USER\Software\Microsoft\Command Processor\EnableExtensions

到 0x1 或 0x0。用户特定设置比机器设置有优先权。命令行
开关比注册表设置有优先权。

命令行扩展包括对下列命令所做的更改和/或添加:

    DEL 或 ERASE
    COLOR
    CD 或 CHDIR
    MD 或 MKDIR
    PROMPT
    PUSHD
    POPD
    SET
    SETLOCAL
    ENDLOCAL
    IF
    FOR
    CALL
    SHIFT
    GOTO
    START (同时包括对外部命令调用所做的更改)
    ASSOC
    FTYPE

有关详细信息,请键入 HELP 命令名。

延迟变量环境扩展不按默认值启用。您可以用/V:ON 或 /V:OFF
命令行开关,为 CMD.EXE 的某个调用而启用或停用延迟环境变量扩充。
您可以在机器上和/或用户登录会话上启用或停用 CMD.EXE 所有
调用的完成,这要通过设置使用 REGEDT32.EXE 的注册表中的
一个或两个 REG_DWORD 值:

    HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\DelayedExpansion

        和/或

    HKEY_CURRENT_USER\Software\Microsoft\Command Processor\DelayedExpansion

到 0x1 或 0x0。用户特定设置比机器设置有优先权。命令行开关
比注册表设置有优先权。

如果延迟环境变量扩充被启用,惊叹号字符可在执行时间,被用来
代替一个环境变量的数值。

文件和目录名完成不按默认值启用。您可以用 /F:ON 或 /F:OFF
命令行开关,为 CMD.EXE 的某个调用而启用或停用文件名完成。 您可以
在机器上和/或用户登录会话上启用或停用 CMD.EXE 所有调用的
完成,这要通过设置使用 REGEDT32.EXE 的注册表中的一个或两个
REG_DWORD 值:

    HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\CompletionChar
    HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\PathCompletionChar

        和/或

    HKEY_CURRENT_USER\Software\Microsoft\Command Processor\CompletionChar
    HKEY_CURRENT_USER\Software\Microsoft\Command Processor\PathCompletionChar

由一个控制字符的十六进制值作为一个特定参数(例如,0x4 是
Ctrl-D,0x6 是 Ctrl-F)。 用户特定设置优先于机器设置。命令行开关
优先于注册表设置。

如果完成是用 /F:ON 命令行开关启用的,两个要使用的控制符是: 目录名
字完成用 Ctrl-D, 文件名完成用 Ctrl-F。 要停用注册表中的某个
字符,请用空格(0x20)的数值,因为此字符不是控制字符。

如果键入两个控制字符中的一个,完成会被调用。完成功能将
路径字符串带到光标的左边,如果没有通配符,将通配符附加
到左边,并建立相符的路径列表。然后,显示第一个相符的路
径。如果没有相符的路径,则发出嘟嘟声,不影响显示。之后,
重复按同一个控制字符会循环显示相符路径的列表。将 Shift 键
跟控制字符同时按下,会倒着显示列表。如果对该行进行了任
何编辑,并再次按下控制字符,保存的相符路径的列表会被丢弃,
新的会被生成。如果在文件和目录名完成之间切换,会发生
同样现象。两个控制字符之间的唯一区别是文件完成字符符合
文件和目录名,而目录完成字符只符合目录名。如果文件完成
被用于内置式目录命令(CD、MD 或 RD),就会使用目录完成。

将引号将相符路径括起来,完成代码可以正确处理含有空格
或其他特殊字符的文件名。同时,如果备份,然后从行内调用
文件完成,完成被调用是位于光标右方的文字会被丢弃。

需要引号的特殊字符是:
     <space>
     &()[]{}^=;!'+,`~

#3


2楼正解,无需补充了。

#4


Process p = new Process();
          p.StartInfo.FileName = "cmd.exe /K";
           p.StartInfo.UseShellExecute = false;
          p.StartInfo.RedirectStandardInput = true;
          p.StartInfo.RedirectStandardOutput = true;
          p.StartInfo.RedirectStandardError = true;
          p.StartInfo.CreateNoWindow = false;
          p.StartInfo.Arguments = "IIsApp /a q /r";    //設定程式執行參數
           p.Start();
          string s = p.StandardOutput.ReadToEnd();// 得到cmd.exe的输出
          p.Close();


怎么会提示"找不到指定文件"?

#5


应用程序中发生了无法处理的异常。如果单击“继续”,应用程序将忽略此错误并尝试继续。如果单击“退出”,
应用程序将立即关闭。
系统找不到指定的文件。。

实际上点击"继续",程序就关闭了!

#6


看不太明白你想要什么效果。给你两种方案:
一、
Process.Start("cmd");
            Thread.Sleep(500);
            SendKeys.SendWait("d");
            SendKeys.SendWait("i");
            SendKeys.SendWait("r");
            SendKeys.SendWait("{ENTER}");

二、
Process p = new Process();
            p.StartInfo.FileName = "cmd.exe";
            // 这里是关键点,不用Shell启动/重定向输入/重定向输出/不显示窗口
            p.StartInfo.UseShellExecute = false;
            p.StartInfo.RedirectStandardInput = true;
            p.StartInfo.RedirectStandardOutput = true;
            p.StartInfo.RedirectStandardError = true;
            //p.StartInfo.CreateNoWindow = false;
            //p.StartInfo.Arguments = "IIsApp /a magnet /r";    //設定程式執行參數
            p.Start();
            StreamWriter myW = p.StandardInput;
            myW.WriteLine("dir");
            StreamReader myR =p.StandardOutput;
            MessageBox.Show(myR.ReadToEnd());// 得到cmd.exe的输出
            //p.Close();//p.StandardOutput.ReadToEnd()

#7


            StreamReader myR1 = new StreamReader(@"C:\a.txt");
            string s=myR1.ReadToEnd();
            StreamWriter myW1 = p.StandardInput;
            myW1.WriteLine(s);
            StreamReader myR2 = p.StandardOutput;
            StreamWriter myW2 = new StreamWriter(@"C:\b.txt");
            myW2.WriteLine(myR2.ReadToEnd());
            myW2.Close(); myW2.Dispose();

或许这段加上是你想要的?a.txt中是你要执行的命令,每个命令要换一行。你试一下。

#8


谢谢楼上的,这已经达到了我的目的。真服了你了!
等2楼的再回复后再给分!十分感谢!

#9


没有太明白楼主的意思,但是根据上面的回答,感觉窗口还是退出的
无论是传递命令行参数的方式,还是通过输入流操作写入的方式,命令行窗口都是会关闭的
还是楼主的意图是想正确获得cmd.exe的输出?


Process p = new Process();

            p.StartInfo.FileName = "cmd";            
            p.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;

            // 这里是关键点,不用Shell启动/重定向输入/重定向输出/不显示窗口
            p.StartInfo.UseShellExecute = false;
            //注意:如果传递参数的话就将输入关闭,否则程序期待之后会等待输入流操作
            //p.StartInfo.RedirectStandardInput = true;
            p.StartInfo.RedirectStandardOutput = true;
            p.StartInfo.RedirectStandardError = true;
            p.StartInfo.CreateNoWindow = false;
            p.StartInfo.Arguments = "/k ipconfig /all";    //設定程式執行參數

            p.Start();
            using (StreamReader sr = p.StandardOutput)
            {
                MessageBox.Show(sr.ReadToEnd());// 得到cmd.exe的输出
            }
            p.WaitForExit();
            p.Close();


另如果用输入流操作的话,

Process p = new Process();
            p.StartInfo.FileName = "cmd.exe";
            // 这里是关键点,不用Shell启动/重定向输入/重定向输出/不显示窗口
            p.StartInfo.UseShellExecute = false;
            p.StartInfo.RedirectStandardInput = true;
            p.StartInfo.RedirectStandardOutput = true;
            p.StartInfo.RedirectStandardError = true;
            //p.StartInfo.CreateNoWindow = false;
            //p.StartInfo.Arguments = "IIsApp /a magnet /r";    //設定程式執行參數
            p.Start();
            StreamWriter myW = p.StandardInput;
            myW.WriteLine("dir");
//此处一定要关闭输入流,不然程序还是等待输入完毕的操作
myW.Close();
            StreamReader myR =p.StandardOutput;
            MessageBox.Show(myR.ReadToEnd());// 得到cmd.exe的输出
            p.WaitForExit();

            p.Close();

#10


注意:如果传递参数的话就将输入关闭,否则程序期待之后会等待输入流操作

#11


p.StartInfo.FileName = "c:\windows\system32\cmd.exe /K";
你这样试一下呢
找不到文件可能是说找不到这个文件,如果还是提示找不到,再指定一下后面的全路径

#12


按楼上的 试过了 没用 还是提示 找不到文件
paulin和legendcyqkt都可以!先结帖吧!有什么补充再跟帖讨论吧!

#13


解决问题就好,实事上个人感觉调用CMD不是好的解决方案。

#14


这个问题很有意思

#15


学习啦  。。。

#1


呵呵。执行start 

#2


p.StartInfo.FileName = "cmd.exe /K";
红色的是答案:
启动 Windows XP 命令解释程序一个新的实例

CMD [/A | /U] [/Q] [/D] [/E:ON | /E:OFF] [/F:ON | /F:OFF] [/V:ON | /V:OFF]
    [[/S] [/C | /K] string]

/C      执行字符串指定的命令然后终断
/K      执行字符串指定的命令但保留

/S      在 /C 或 /K 后修改字符串处理(见下)
/Q      关闭回应
/D      从注册表中停用执行 AutoRun 命令(见下)
/A      使向内部管道或文件命令的输出成为 ANSI
/U      使向内部管道或文件命令的输出成为 Unicode
/T:fg   设置前景/背景颜色(详细信息,请见 COLOR /?)
/E:ON   启用命令扩展(见下)
/E:OFF  停用命令扩展(见下)
/F:ON   启用文件和目录名称完成字符 (见下)
/F:OFF  停用文件和目录名称完成字符(见下)
/V:ON   将 ! 作为定界符启动延缓环境变量扩展。如: /V:ON 会
        允许 !var! 在执行时允许 !var! 扩展变量 var。var 语法
        在输入时扩展变量,这与在一个 FOR 循环内不同。
/V:OFF  停用延缓的环境扩展。

请注意,如果字符串有引号,可以接受用命令分隔符 '&&' 隔开
的多个命令。并且,由于兼容原因,/X 与 /E:ON 相同,/Y 与
/E:OFF 相同,并且 /R 与 /C 相同。忽略任何其他命令行开关。

如果指定了 /C 或 /K,命令行开关后的命令行其余部分将作为命令行处
理;在这种情况下,会使用下列逻辑处理引号字符("):

    1.   如果符合下列所有条件,那么在命令行上的引号字符将被
        保留:

        - 不带 /S 命令行开关
        - 整整两个引号字符
        - 在两个引号字符之间没有特殊字符,特殊字符为下列中的
          一个: <>()@^|
        - 在两个引号字符之间有至少一个空白字符
        - 在两个引号字符之间有至少一个可执行文件的名称。

    2.  否则,老办法是,看第一个字符是否是一个引号字符,如果
        是,舍去开头的字符并删除命令行上 的最后一个引号字符,
        保留最后一个引号字符之后的文字。

如果 /D 未在命令行上被指定,当 CMD.EXE 开始时,它会寻找
以下 REG_SZ/REG_EXPAND_SZ 注册表变量。如果其中一个或
两个都存在,这两个变量会先被执行。

    HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\AutoRun

        和/或

    HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRun

命令扩展是按默认值启用的。您也可以使用 /E:OFF,为某一
特定调用而停用扩展。您可以在机器上和/或用户登录会话上
启用或停用 CMD.EXE 所有调用的扩展,这要通过设置使用
REGEDT32.EXE 的注册表中的一个或两个 REG_DWORD 值:

    HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\EnableExtensions

        和/或

    HKEY_CURRENT_USER\Software\Microsoft\Command Processor\EnableExtensions

到 0x1 或 0x0。用户特定设置比机器设置有优先权。命令行
开关比注册表设置有优先权。

命令行扩展包括对下列命令所做的更改和/或添加:

    DEL 或 ERASE
    COLOR
    CD 或 CHDIR
    MD 或 MKDIR
    PROMPT
    PUSHD
    POPD
    SET
    SETLOCAL
    ENDLOCAL
    IF
    FOR
    CALL
    SHIFT
    GOTO
    START (同时包括对外部命令调用所做的更改)
    ASSOC
    FTYPE

有关详细信息,请键入 HELP 命令名。

延迟变量环境扩展不按默认值启用。您可以用/V:ON 或 /V:OFF
命令行开关,为 CMD.EXE 的某个调用而启用或停用延迟环境变量扩充。
您可以在机器上和/或用户登录会话上启用或停用 CMD.EXE 所有
调用的完成,这要通过设置使用 REGEDT32.EXE 的注册表中的
一个或两个 REG_DWORD 值:

    HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\DelayedExpansion

        和/或

    HKEY_CURRENT_USER\Software\Microsoft\Command Processor\DelayedExpansion

到 0x1 或 0x0。用户特定设置比机器设置有优先权。命令行开关
比注册表设置有优先权。

如果延迟环境变量扩充被启用,惊叹号字符可在执行时间,被用来
代替一个环境变量的数值。

文件和目录名完成不按默认值启用。您可以用 /F:ON 或 /F:OFF
命令行开关,为 CMD.EXE 的某个调用而启用或停用文件名完成。 您可以
在机器上和/或用户登录会话上启用或停用 CMD.EXE 所有调用的
完成,这要通过设置使用 REGEDT32.EXE 的注册表中的一个或两个
REG_DWORD 值:

    HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\CompletionChar
    HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\PathCompletionChar

        和/或

    HKEY_CURRENT_USER\Software\Microsoft\Command Processor\CompletionChar
    HKEY_CURRENT_USER\Software\Microsoft\Command Processor\PathCompletionChar

由一个控制字符的十六进制值作为一个特定参数(例如,0x4 是
Ctrl-D,0x6 是 Ctrl-F)。 用户特定设置优先于机器设置。命令行开关
优先于注册表设置。

如果完成是用 /F:ON 命令行开关启用的,两个要使用的控制符是: 目录名
字完成用 Ctrl-D, 文件名完成用 Ctrl-F。 要停用注册表中的某个
字符,请用空格(0x20)的数值,因为此字符不是控制字符。

如果键入两个控制字符中的一个,完成会被调用。完成功能将
路径字符串带到光标的左边,如果没有通配符,将通配符附加
到左边,并建立相符的路径列表。然后,显示第一个相符的路
径。如果没有相符的路径,则发出嘟嘟声,不影响显示。之后,
重复按同一个控制字符会循环显示相符路径的列表。将 Shift 键
跟控制字符同时按下,会倒着显示列表。如果对该行进行了任
何编辑,并再次按下控制字符,保存的相符路径的列表会被丢弃,
新的会被生成。如果在文件和目录名完成之间切换,会发生
同样现象。两个控制字符之间的唯一区别是文件完成字符符合
文件和目录名,而目录完成字符只符合目录名。如果文件完成
被用于内置式目录命令(CD、MD 或 RD),就会使用目录完成。

将引号将相符路径括起来,完成代码可以正确处理含有空格
或其他特殊字符的文件名。同时,如果备份,然后从行内调用
文件完成,完成被调用是位于光标右方的文字会被丢弃。

需要引号的特殊字符是:
     <space>
     &()[]{}^=;!'+,`~

#3


2楼正解,无需补充了。

#4


Process p = new Process();
          p.StartInfo.FileName = "cmd.exe /K";
           p.StartInfo.UseShellExecute = false;
          p.StartInfo.RedirectStandardInput = true;
          p.StartInfo.RedirectStandardOutput = true;
          p.StartInfo.RedirectStandardError = true;
          p.StartInfo.CreateNoWindow = false;
          p.StartInfo.Arguments = "IIsApp /a q /r";    //設定程式執行參數
           p.Start();
          string s = p.StandardOutput.ReadToEnd();// 得到cmd.exe的输出
          p.Close();


怎么会提示"找不到指定文件"?

#5


应用程序中发生了无法处理的异常。如果单击“继续”,应用程序将忽略此错误并尝试继续。如果单击“退出”,
应用程序将立即关闭。
系统找不到指定的文件。。

实际上点击"继续",程序就关闭了!

#6


看不太明白你想要什么效果。给你两种方案:
一、
Process.Start("cmd");
            Thread.Sleep(500);
            SendKeys.SendWait("d");
            SendKeys.SendWait("i");
            SendKeys.SendWait("r");
            SendKeys.SendWait("{ENTER}");

二、
Process p = new Process();
            p.StartInfo.FileName = "cmd.exe";
            // 这里是关键点,不用Shell启动/重定向输入/重定向输出/不显示窗口
            p.StartInfo.UseShellExecute = false;
            p.StartInfo.RedirectStandardInput = true;
            p.StartInfo.RedirectStandardOutput = true;
            p.StartInfo.RedirectStandardError = true;
            //p.StartInfo.CreateNoWindow = false;
            //p.StartInfo.Arguments = "IIsApp /a magnet /r";    //設定程式執行參數
            p.Start();
            StreamWriter myW = p.StandardInput;
            myW.WriteLine("dir");
            StreamReader myR =p.StandardOutput;
            MessageBox.Show(myR.ReadToEnd());// 得到cmd.exe的输出
            //p.Close();//p.StandardOutput.ReadToEnd()

#7


            StreamReader myR1 = new StreamReader(@"C:\a.txt");
            string s=myR1.ReadToEnd();
            StreamWriter myW1 = p.StandardInput;
            myW1.WriteLine(s);
            StreamReader myR2 = p.StandardOutput;
            StreamWriter myW2 = new StreamWriter(@"C:\b.txt");
            myW2.WriteLine(myR2.ReadToEnd());
            myW2.Close(); myW2.Dispose();

或许这段加上是你想要的?a.txt中是你要执行的命令,每个命令要换一行。你试一下。

#8


谢谢楼上的,这已经达到了我的目的。真服了你了!
等2楼的再回复后再给分!十分感谢!

#9


没有太明白楼主的意思,但是根据上面的回答,感觉窗口还是退出的
无论是传递命令行参数的方式,还是通过输入流操作写入的方式,命令行窗口都是会关闭的
还是楼主的意图是想正确获得cmd.exe的输出?


Process p = new Process();

            p.StartInfo.FileName = "cmd";            
            p.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;

            // 这里是关键点,不用Shell启动/重定向输入/重定向输出/不显示窗口
            p.StartInfo.UseShellExecute = false;
            //注意:如果传递参数的话就将输入关闭,否则程序期待之后会等待输入流操作
            //p.StartInfo.RedirectStandardInput = true;
            p.StartInfo.RedirectStandardOutput = true;
            p.StartInfo.RedirectStandardError = true;
            p.StartInfo.CreateNoWindow = false;
            p.StartInfo.Arguments = "/k ipconfig /all";    //設定程式執行參數

            p.Start();
            using (StreamReader sr = p.StandardOutput)
            {
                MessageBox.Show(sr.ReadToEnd());// 得到cmd.exe的输出
            }
            p.WaitForExit();
            p.Close();


另如果用输入流操作的话,

Process p = new Process();
            p.StartInfo.FileName = "cmd.exe";
            // 这里是关键点,不用Shell启动/重定向输入/重定向输出/不显示窗口
            p.StartInfo.UseShellExecute = false;
            p.StartInfo.RedirectStandardInput = true;
            p.StartInfo.RedirectStandardOutput = true;
            p.StartInfo.RedirectStandardError = true;
            //p.StartInfo.CreateNoWindow = false;
            //p.StartInfo.Arguments = "IIsApp /a magnet /r";    //設定程式執行參數
            p.Start();
            StreamWriter myW = p.StandardInput;
            myW.WriteLine("dir");
//此处一定要关闭输入流,不然程序还是等待输入完毕的操作
myW.Close();
            StreamReader myR =p.StandardOutput;
            MessageBox.Show(myR.ReadToEnd());// 得到cmd.exe的输出
            p.WaitForExit();

            p.Close();

#10


注意:如果传递参数的话就将输入关闭,否则程序期待之后会等待输入流操作

#11


p.StartInfo.FileName = "c:\windows\system32\cmd.exe /K";
你这样试一下呢
找不到文件可能是说找不到这个文件,如果还是提示找不到,再指定一下后面的全路径

#12


按楼上的 试过了 没用 还是提示 找不到文件
paulin和legendcyqkt都可以!先结帖吧!有什么补充再跟帖讨论吧!

#13


解决问题就好,实事上个人感觉调用CMD不是好的解决方案。

#14


这个问题很有意思

#15


学习啦  。。。