我有一个我运行的批处理文件,我等待在目录中写入一个文件。目前我有一个PAUSE命令,一旦文件在那里,我只需按一个键,其余的批处理继续。
我想用一个查找文件的FOR循环替换那个PAUSE,并在文件到达后自动运行批处理的其余部分
这是
部分echo Make sure TEST file is ready
PAUSE
ren *.csv test.csv
有什么想法吗?
答案 0 :(得分:0)
for
loop无法等待文件存在。
如果不存在匹配的文件,您可以使用goto
循环和if
子句有条件地跳回。确保在循环中插入一个延迟(例如,timeout
)以不加载CPU:
:LOOP
> nul timeout /T 1 /NOBREAK
if not exist "*.csv" goto :LOOP
ren "*.csv" "test.csv"
如果还有一个名称匹配的目录,您可以使用dir /A:-D
来搜索匹配的文件以及conditional operator ||
:
:LOOP
> nul timeout /T 1 /NOBREAK
> nul 2>&1 dir /A:-D "*.csv" || goto :LOOP
ren "*.csv" "test.csv"