我想设法执行和操作我的蝙蝠文件,但是,在后台我想倒计时,以便在特定时间之后,无论如何,我的蝙蝠会调用另一个删除它或只是将其关闭的蝙蝠。
我也希望蝙蝠文件显示在执行最大化。我在启动命令后设置了/ max,但是仍然最小化。我用înbat / min进行了工作,无法弄清楚为什么/ max可以工作。
为了使其最大化发挥作用,请将其放在脚本顶部,下方 @echo off
if not "%1" == "max" start /MAX cmd /c %0 max & exit/b
我将在另一部分稍后再更新此答案,但我认为,只要此操作以超时打开一个新的批处理start /B
应该会很有帮助。
编辑
因此,这将在脚本中添加第二个脚本。第二个脚本杀死第一个脚本,并启动第三个cmd删除自身:
@echo off
if not "%1" == "max" start /MAX cmd /c %0 max & exit/b
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 @echo off > killParent.bat
:: replace the 5 on the next line with any other number
echo timeout /t 5 /nobreak >> killParent.bat
echo start "" cmd ^/c timeout ^/t 1^^^&del "%%~f0"^^^&exit ^/b >> killParent.bat
echo taskkill /f /PID %PID% >> killParent.bat
START /B CMD /C CALL killParent.bat >NUL 2>&1
::any logic here instead of pause
pause
将您的代码放在暂停位置,然后将5替换为您要等待的秒数。
这确实有不能够的计时器耗尽之前完成的缺点,你可以通过将解决这个问题echo title parentKiller >> killParent.bat
下面echo @echo off > killParent.bat
,并把
del killParent.bat
taskkill /F /FI "WINDOWTITLE eq parentKiller *" /T
在执行路径的末尾,因此通常在批处理文件的底部。然后将如下所示:
@echo off
if not "%1" == "max" start /MAX cmd /c %0 max & exit/b
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 @echo off > killParent.bat
echo title parentKiller >> killParent.bat
:: replace the 5 on the next line with any other number
echo timeout /t 5 /nobreak >> killParent.bat
echo start "" cmd ^/c timeout ^/t 1^^^&del "%%~f0"^^^&exit ^/b >> killParent.bat
echo taskkill /f /PID %PID% >> killParent.bat
START /B CMD /C CALL killParent.bat >NUL 2>&1
::any logic here instead of pause
pause
del killParent.bat
taskkill /F /FI "WINDOWTITLE eq parentKiller *" /T
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句