使用另一个批次启动批次会导致多次运行

使用另一个批次启动批次会导致多次运行

我有一批,并用第一批启动另一批,我注意到第二批在 1 秒内运行多次。其他一些批次间隔 1 分钟,即使我使用TIMEOUT /T 1000

我发现这不仅仅是一个启动另一个批次的批次集的问题,而是所有由另一个批次运行的批次都出现了这个问题。有人能帮我解决这个问题吗,如何解决这个问题我试过

start /B batch.bat
call batch.bat
start cmd /c "batch.bat"

如果我使用这个脚本,它会在 1 秒内批量启动 6 次,但实际上应该只启动 1 次。

set startdir=%cd%
for /d %%i in (*) do (
    cd %%i
    if exist "new_copy_sendmail.bat" call "new_copy_sendmail.bat"
    cd %startdir%
)

答案1

它对每个包含同名批处理文件的文件夹运行一次如果批处理文件也存在于 中,则对每个包含空格或特殊字符的文件夹执行一次,startdir因为cd如果文件夹包含空格或特殊字符(如 & 符号),则将失败。您可以通过将调用改为 来修复它。此语法将允许您访问包含空格或其他特殊字符的目录cdcd "%%~i"cd

更简洁的方法是只针对特定文件运行它,而不是使用 跳转到子目录forfiles。这将仅对new_copy_sendmail.bat当前目录或任何子目录中的每个文件运行一次。

forfiles /m "new_copy_sendmail.bat" /S /C "cmd /c call @relpath"

相关内容