wer*_*eld 11 external-process batch-file c#-2.0
我需要做的是让C#2005 GUI应用程序根据用户的请求调用.bat和几个VBScript文件.这只是假期结束前的一个临时解决方案,我可以用C#编写所有内容.我可以毫无问题地执行VBScript文件但我无法执行.bat文件.当我在C#应用程序中"单击"执行.bat文件时,DOS窗口打开并关闭非常快,并且测试.bat文件不执行 - "Windows无法识别bat作为内部或外部命令"是错误在DOS框中返回.如果我只是双击.bat文件或从命令提示符手动运行它确实执行.除非需要用户交互,否则我还需要静默执行.bat文件 - 此脚本将11k +文件复制到联网计算机上的文件夹中,偶尔Windows"忘记"
到目前为止,在我的C#源代码中我有这个:
Process scriptProc = new Process();
if (File.Exists("c:\\scripts\\batchfile1.bat"))
{
scriptProc.StartInfo.FileName = @"cscript";
scriptProc.StartInfo.Arguments = ("cmd.exe", "/C C:\\scripts\\batchfile1.bat"); // Wacky psuedo code //
scriptProc.Start();
scriptProc.WaitForExit(1500000);
scriptProc.Close();
}
if (!File.Exists("c:\\scripts\\batchfile1.bat"))
{
}
Run Code Online (Sandbox Code Playgroud)
我知道这段代码不起作用 - 但它本质上是我想要它做的.对于.bat文件,我正在看的是这样的.我假设我必须告诉系统使用cmd来运行.bat.我不知道如何做到这一点.我已经查看了这个用于C#2003的网站.对我来说没什么用,因为我对C#非常环保.
编辑:使用凯文的帖子我再次尝试.来自该帖子的相同解决方案脚本,但为我修改,因为我不需要重定向:
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo.FileName = "C:\\scripts\\batchfile1.bat";
proc.StartInfo.RedirectStandardError = false;
proc.StartInfo.RedirectStandardOutput = false;
proc.StartInfo.UseShellExecute = false;
proc.Start();
proc.WaitForExit();
Run Code Online (Sandbox Code Playgroud)
kem*_*002 11
这是你在找什么:
这是关于为什么服务无法执行文件的问题,但它显示了执行此操作所需的所有代码.