首页 > 解决方案 > 运行带有 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;,现在我可以看到消息“由于系统找不到指定文件的错误,命令无法运行”

标签: c#powershellbatch-file

解决方案


问题归结为走路前跑步。

  1. 不要关闭可能会显示您需要的消息的窗口,直到一切正常
  2. 找到错误“找不到文件”但看到它,它没有在你做的地方

解决方案:

总是添加一条工作路径你对每件事越具体,就越难选择错误的东西。所以在这种情况下

processInfo.WorkingFolder = @"c:\";

其他选项可能直接在 C# 或 1 个批处理文件中完成。


推荐阅读