批处理脚本 - 在另一批处理完成后中断循环

时间:2017-03-08 10:19:25

标签: windows loops batch-file conditional-statements

我有一个非常简单的脚本,它将文件夹中的所有.txt文件合并,如下所示:

copy /b *.txt Merged_output.txt >nul

这可以完成工作并且不会打印任何内容,这是可以的(我不希望它打印它合并的每个文件的名称)

但我希望看到脚本仍在运行,直到它结束合并所有.txt文件。 我有很多要合并的文件(8000+),这需要一些时间,我不知道它是否还在运行。

我正在考虑创建另一个具有循环的批处理脚本,它会反复打印此消息:正在运行... 有点吼叫:

@echo off
cls
:start
cls
echo Running...
goto start

我想知道是否可以从循环脚本开始,打印正在运行的消息,并在运行merging.bat脚本并在合并完成后停止它。

非常感谢任何其他建议。

1 个答案:

答案 0 :(得分:2)

您不需要另一个批处理文件。而不是隐藏输出,掩盖它

@echo off
    setlocal enableextensions disabledelayedexpansion

    set monitor=cmd /q /v /e /c"for /l %%a in () do set/p.=&&echo !time! working || exit"

    copy /b *.txt merged_output | %monitor%
    echo %time% done 

它只是将copy命令的输出传递给一个单独的cmd实例,该实例循环读取每一行并打印当前时间和working文字。