【问题标题】:Run batch file in background在后台运行批处理文件
【发布时间】:2018-07-08 10:13:49
【问题描述】:

我有一个批处理文件,只要系统 (Windows 2007) 打开,我就想在后台运行它。批处理文件监视给定程序的任务列表,当它看到它已关闭时,提示用户取消它的许可。

我目前正在尝试执行此操作,但不将批处理文件转换为可执行文件或 Windows 服务文件。

我发现的在线参考资料多得数不清,这些资料告诉我应该使用“start /b file.bat”在后台运行批处理文件,但这对我不起作用,它只是启动在我正在使用的同一 cmd 行窗口中启动批处理文件。

任何人都可以提出问题出在哪里,甚至更好吗?一个很好的简单方法让我让批处理文件运行离子启动(我不能使用 GUI,因为我必须将它远程推广到多台计算机)

谢谢

【问题讨论】:

标签: windows batch-file background-process startup


【解决方案1】:

您可以创建批处理文件的快捷方式并将快捷方式放在您的Startup Programs directory

C:\Users\\AppData\Roaming\Microsoft\Windows\开始菜单\程序\启动

由于您必须将它远程推广到多台计算机,因此假设远程计算机启用了 WinRM 并且您的帐户具有足够的权限,您应该能够通过网络将批处理文件复制到启动程序目录。

如果您希望此批处理文件在启动时在后台运行,您可以从 VBScript 引用您的批处理文件(而不是使用批处理文件的快捷方式)并设置VBscript to run in invisible mode

Set WshShell = CreateObject("WScript.Shell") 
WshShell.Run chr(34) & "C:\path\to\your\batchfile.bat" & Chr(34), 0
Set WshShell = Nothing

只需给这个 vbscript 文件加上 .vbs 扩展名。

【讨论】:

  • 嗨,亚当,谢谢,但我已经试过了;问题是它会在前台运行批处理文件。
  • 您可以从VBscript in invisible mode 运行您的批处理文件并将vbscript 放在启动程序目录中。我已更新我的答案以包含此方法。
  • @WRJ,如果这有助于或解决了您的问题,您介意投票吗?谢谢!
【解决方案2】:

如果您关心的程序是 GUI 程序(即非控制台),请等待它退出。批处理等待 GUI 程序退出(但不是在交互启动时)。

notepad
echo My notepad exited

Start /b 表示在同一窗口中启动程序。见Start /?。此外,开始通常是使用错误的命令。它以异常方式启动程序。如何启动程序见http://stackoverflow.com/questions/41030190/command-to-run-a-bat-file/41049135#41049135结尾。

这是一个 VBS 文件。

这会监视记事本退出,弹出一个消息框,然后重新启动记事本。

Set WshShell = WScript.CreateObject("WScript.Shell")
Set objWMIService = GetObject("winmgmts:\\.\root\CIMV2") 
Set objEvents = objWMIService.ExecNotificationQuery("SELECT * FROM Win32_ProcessStopTrace")

Do
    Set objReceivedEvent = objEvents.NextEvent
    msgbox objReceivedEvent.ProcessName
    If lcase(objReceivedEvent.ProcessName) = lcase("Notepad.exe") then 
        Msgbox "Process exited with exit code " & objReceivedEvent.ExitStatus
        WshShell.Run "c:\Windows\notepad.exe", 1, false
    End If
Loop

这应该会使用更少的电池电量和 CPU 周期。批处理文件是逐行读取的,因此后台任务非常糟糕。

如果您关心的程序是 GUI 程序(即非控制台),请等待它退出。批处理等待 GUI 程序退出(但不是在交互启动时)。

notepad
echo My notepad exited

【讨论】:

    猜你喜欢
    • 2010-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-05
    • 2012-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多