我有一个批处理文件,我想在系统(Windows 2007)打开时在后台运行。批处理文件监视给定程序的任务列表,当它看到它关闭时,提示用户取消许可。
我目前正在尝试这样做而不将批处理文件转换为可执行文件或Windows服务文件。
我发现了更多的在线参考资料,而不是我可以计算的,它告诉我应该使用" start / b file.bat"在后台运行批处理文件,但这对我不起作用,它只是在我使用的同一cmd行窗口中启动批处理文件。
任何人都可以建议出现问题,甚至更好;一个很好的简单方法让我让批处理文件运行离子启动(我不能使用GUI,因为我必须远程将其推送到多台计算机)
由于
答案 0 :(得分:1)
您可以创建批处理文件的快捷方式,并将快捷方式放在unboxing conversion:
中C:\ Users \\ AppData \ Roaming \ Microsoft \ Windows \ Start Menu \ Programs \ Startup
由于您必须远程将其推送到多台计算机,因此您应该能够通过网络将批处理文件复制到启动程序目录,假设远程计算机已启用WinRM并且您的帐户具有足够的权限。
如果您希望此批处理文件在启动时在后台运行,您可以从VBScript引用批处理文件(而不是使用批处理文件的快捷方式)并设置Startup Programs directory:
SELECT COUNT(*)
FROM <TABLE 1> ONN, <TABLE 2> SV
WHERE SV.CSA_SHP_VISIT_STG_SEQ_ID=ONN.CSA_SHOP_VIST_SEQ_ID
AND EXISTS (SELECT '1' FROM <TABLE 3> TMP
WHERE TRIM(SV.WORK_ORDER_NUM) = TRIM(TMP.WORK_ORDER_NUM)
AND PLANT IN ('EMA')
AND regexp_replace(TRIM(ONN.INSTLD_PART), '^0+([[:digit:]]+)$',
'\1')=TRIM(TMP.INSTLD_PART) AND
TRIM(ONN.INSTLD_PART_SERIAL_NUM)=TRIM(TMP.INSTLD_PART_SERIAL_NUM) AND
nvl(to_number(TRIM(ONN.INSTLD_PART_CSN)),0)=
nvl(to_number(TRIM(TMP.INSTLD_PART_CSN)),0)
and REGEXP_LIKE(tmp.INSTLD_PART_CSN, '^-?\d+(\.\d+)?$'))
只需为此vbscript文件提供.vbs扩展名。
答案 1 :(得分:0)
如果您关注的程序是GUI程序(即非控制台),请等待它退出。批处理等待GUI程序退出(但不是以交互方式启动)。
notepad
echo My notepad exited
Start /b
说在同一窗口中启动程序。见Start /?
。 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