c# - 运行带有 powershell 的批处理文件并失败
问题描述
我有一个包含以下内容的批处理文件
@powershell -NoProfile -ExecutionPolicy unrestricted -Command "Start-Process secondBat.bat -Verb runas"
secondBat.bat 有以下内容
sc stop theService
pause
我试图运行这个批处理文件(第一个)
int exitCode;
var processInfo = new ProcessStartInfo("cmd.exe", "/C " + @"c:\FirstBat.bat");
processInfo.CreateNoWindow = true;
processInfo.UseShellExecute = false;
Process process = Process.Start(processInfo);
process.WaitForExit();
exitCode = process.ExitCode;
process.Close();
我得到的 exitCode 是“1”(所以失败)并且批处理文件(和内容)没有正确执行。
我根本不知道powershell,所以我会很感激这里的指针。我究竟做错了什么?
编辑:我评论了processInfo.CreateNoWindow = true;
,现在我可以看到消息“由于系统找不到指定文件的错误,命令无法运行”
解决方案
问题归结为走路前跑步。
- 不要关闭可能会显示您需要的消息的窗口,直到一切正常
- 找到错误“找不到文件”但看到它,它没有在你做的地方
解决方案:
总是添加一条工作路径你对每件事越具体,就越难选择错误的东西。所以在这种情况下
processInfo.WorkingFolder = @"c:\";
其他选项可能直接在 C# 或 1 个批处理文件中完成。