【发布时间】:2013-06-18 02:10:23
【问题描述】:
我有一个包含大约 50 个子文件夹(称为 0001、0002、0003... 等)的文件夹,每个文件夹包含数百个文件(称为 0001_132.txt、0002_312.txt、0032_152.txt.. . 等),我需要运行一个批处理文件来提取自上次运行批处理文件以来我尚未处理的文件。
我目前的做法是保存一个.txt 文件,告诉我上次更新期间提取的最后一个文件的文件名。下次我运行批处理文件时,它会遍历子文件夹,直到到达该特定文件名,然后开始提取比该特定文件更新的文件。
我不确定我这样做的方式是否好,但它确实有效。但是,由于文件夹中有很多文件,每次批处理文件在提取新文件之前读取所有旧文件,这会导致程序运行相当长的时间。所以,我想问一下,有没有什么办法可以不循环遍历那些旧文件?
记录最后更新文件的文件如下所示:
last_update.txt: format([subfoldername]_[file].txt)
例如:0001_134 0002_213 . . 0050_241
我的批次看起来像这样:
for /f %%a in (C:\last_update.txt) do (
set number=%%a
set "subfolder=!number%:~0,4!"
set reach=0
for /f %%x in (c:\data\subfolder\) do (
if %%~nx==!number! (
set reach=1
)
if not %%~nx==!number! if !reach!==1 (
DO THE EXTRACTION
)
set latest_File=%%~nx
)
echo !latest!>>last_update_temp.txt
)
del last_update.txt
ren last_update_temp.txt last_update.txt
【问题讨论】:
-
这应该是一个常规的 for 循环(没有 /f)和
!subfolder!变量:for /f %%x in (c:\data\subfolder\) do (。
标签: loops batch-file