如何让该脚本的某个版本在重启后启动?

如何让该脚本的某个版本在重启后启动?

我有一个运行的批处理文件:

for /R C:\some\Directory\target\ %%f in (*.bat) do (call "%%f")

它最终会循环遍历一个 bat 文件,并且必须重新启动,有没有办法让它在重新启动后继续循环?我在 SuperUser 上读到过类似 resume 的内容,但我没有看到它在这里如此快速地实现。有什么办法可以实现它吗?该脚本旨在被调用并在设备上安装软件,但它在重新启动后停止。有没有办法让批处理文件继续执行其他软件?

答案1

@echo off

setlocal enabledelayedexpansion
set "_batch_dir=C:\some\Directory\target"
set "_KeyRunOnce=HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce"

if not "%~1" == "" (set "_skp=skip=%~1" && set "_count=%~1")else set "_count=1"

for /f %%i in ('dir /b /s /aa "%_batch_dir%\*.bat" ^| find /v /c ""')do set /a "_total=%%~i"

for /f "%_skp% delims=" %%i in ('2^>nul where.exe /r "%_batch_dir%" "*.bat"')do if !_count! lss !_total! =;(
     reg add "%_KeyRunOnce%" /v "%~n0" /d "\"%~f0\" \"!_count!\"" /f && set /a "_count+=1" );= 1>nul 2>&1 & call "%%~i"

1>nul 2>&1 reg delete "%_KeyRunOnce%" /v "%~n0" /f & endlocal

1.首先计算要运行的 bat 文件的总数

2.获取总数,检查当前执行是否为初始、间隔或最后一次

3.添加一个计数器,并通过它执行计数器的值并使用该指标进行相关的连续性执行。

4.定义哪个球拍开始、继续和结束,并使用以下建议的参数和RunOnce关键点@tabby.sl

5.替换For /RFor /F并在 RunOnce 中使用计数器作为参数,并使用参数skip作为For /F skip=Argument

相关内容