我需要帮助编写一个if()then命令

时间:2016-11-06 02:09:53

标签: batch-file if-statement

我正在尝试编写一个文件来杀死每个运行的任务。我知道如何杀死这些任务,但我需要帮助编写 if()然后 命令。我想要做的就是将 连接到 ,如果命令提示符 已关闭 ,那么计算机会注销 。另外,我知道如何执行shutdown / l的注销命令。有人可以帮我这个吗?

2 个答案:

答案 0 :(得分:0)

使用autohotkey在后台运行:

@echo off
:loopme
start /WAIT "c:\path\to\batch.file.bat"
goto loopme

将它放在开始菜单的启动文件夹中......并且......瞧!

希望这有帮助! 〜CSS

答案 1 :(得分:0)

可能有一个监视器批处理文件,用于检查主批处理文件的PID是否存在...
主文件:

@echo off
setlocal
title Main Batch File
set T=%TEMP%\sthUnique.tmp
wmic process where (Name="WMIC.exe" AND CommandLine LIKE "%%%TIME%%%") get ParentProcessId /value | find "ParentProcessId" >%T%
set /P A=<%T%
set PID=%A:~16%
echo %PID% > pid.pref
rem The rest of the file is down here...

获取当前PID并将其存储在pid.pref中 监视器批处理文件:

@echo off
setlocal
title Monitor
start mainfile.bat
ping localhost -n 1 -w 2000 >NUL
< pid.pref (set /p pid=)
:loop
tasklist /fi "PID eq %pid%" |find ":" > nul
if "%ERRORLEVEL%"=="1" (
    shutdown.exe /s /t 00
    exit
)
goto loop

监视器批处理文件检查是否存在具有相同PID的进程,如果不存在则关闭计算机。现在,如果一个进程在主Batch文件关闭后打开并且Windows为新进程提供相同的PID,那么你可能会感到不幸,但这种可能性很小。
顺便说一句,首先启动监视器,它将启动它自己的主文件。

注意:我测试了这个。