如何在不打开批处理文件的情况下在后台运行进程?

Jac*_*ott 11 windows bamboo batch-file cmd.exe

我有一个 Windows 服务(Bamboo 集成服务器),它运行一个批处理文件作为该脚本的子进程(构建作业)。在该批处理文件中,我希望能够启动一个进程(我们称之为 workerprocess.exe)并让该进程在后台运行。这一切都很好,我用过:

start "title" /B workerprocess.exe
Run Code Online (Sandbox Code Playgroud)

这一切都很好。问题是这会阻止构建作业的完成。所以批处理脚本完成,但由于 workerprocess.exe 子进程,服务 (Bamboo) 不知道它已经完成:它仍然等待(并显示来自)workerprocess.exe 的输出。

我查看了 start 命令的文档,但看不到任何我想要的东西。我看到了这个问题,但它也没有真正的帮助 - 该服务最终仍然在等待该过程完成。

所以我想总结一下:如何从批处理脚本运行一个新进程,以便它完全分离并且不会阻止任何等待该批处理脚本完成的事情。

npo*_*aka 5

要自我隐藏已经运行的脚本,您需要getCmdPid.batwindowoMode.bat

@echo off

echo self minimizing
call getCmdPid.bat
call windowMode.bat -pid %errorlevel% -mode hidden

echo --other commands--
pause
Run Code Online (Sandbox Code Playgroud)

所有链接的脚本都可以下载并使用您觉得方便的任何名称保存。

  1. Iexpress的解决方案-作为参数,只接受命令及其参数。

用法示例:

call hidder.bat myBat.bat  myexe.exe
call myexe.exe
Run Code Online (Sandbox Code Playgroud)
  1. SCHTASKS - 同样只接受两个参数 - 命令和参数。还检查它是否以提升的权限启动,如果可能,使用 WEVTUTIL 命令获取进程的 PID。

用法示例:

call SCHPhidden.bat "cmd /c myBat.bat"  "argument"
Run Code Online (Sandbox Code Playgroud)
  1. 'WScript.Shell' - 该脚本是 'WScript.Shell' 的完整包装器,每个可能的选项都可以通过命令行选项设置。它是一个 jscript/batch 混合体,可以称为 bat。

示例用法(有关更多信息,请使用“-h”打印帮助):

call ShellRunJS.bat "notepad.exe" -style 0 -wait no 
Run Code Online (Sandbox Code Playgroud)
  1. 'Win32_ProcessStartup' - 再次是完整的包装器,所有选项都可以通过命令行参数访问。这次是 WSF/batch 混合,带有一些 Jscript 和一些 VBScript 代码片段 - 但它返回启动进程的 PID。如果进程 id 没有隐藏可以使用一些选项,如 X/Y 坐标。

示例用法(有关更多信息,请使用“-h”打印帮助)。如果它不在以下目录中,则需要可执行文件/脚本的完整路径%path%

call win32process.bat "notepad" -arguments "/A openFile.txt"  -showWindow 0 -title "notepad"
Run Code Online (Sandbox Code Playgroud)
  1. 这 。NET 解决方案。ProcessStartInfo 选项的大部分选项都使用了(但最后我太累了,无法包含所有内容):

示例用法(有关更多信息,请使用“-h”打印帮助):

call ProcessStartJS.bat "notepad" -arguments "/A openFile.txt"  -style Hidden -directory "." -title "notepad" -priority Normal
Run Code Online (Sandbox Code Playgroud)

  • 我尝试了一些 - 我认为需要大量清理细节。简单看第一种方法:IExpress,链接是hidder.bat,上面的例子使用了别的东西。当我运行脚本时,它没有要求我提供上面没有提到的 EXE。如果 github 上有降价,那可能没问题,但没有。最后,运行它产生了一些 .DDF 文件,但没有别的...... (2认同)

Sun*_*Sun 2

您尝试过隐藏启动(HSTART)吗?(费用 20 美元)

我个人用它来运行隐藏窗口的每小时批处理作业。他们还提到您可以作为参数顺序运行命令(或者默认情况下,我假设)异步运行。我不知道这将如何影响您对 CPU、内存或磁盘的争用...但该软件还为您提供了在执行操作之前等待一段时间的选项。