运行包含powershell的批处理文件并失败

时间:2018-06-19 07:03:53

标签: c# powershell batch-file

我有一个包含以下内容的批处理文件

@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;,现在我可以看到这条消息了 “由于系统无法找到指定文件的错误,该命令无法运行”

1 个答案:

答案 0 :(得分:1)

问题归结为步行前的跑步。

  1. 请不要关闭可能会显示所需消息的窗口,直到您完成所有工作
  2. 找到错误"找不到文件"但看到它,它不看你在哪里
  3. 解决方案:

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

    processInfo.WorkingFolder = @"c:\";
    

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