循环以从上次修改的文件开始有效地搜索文件

时间:2013-06-18 02:10:24

标签: loops batch-file

我有一个包含大约50个子文件夹的文件夹(称为000100020003 ...等),每个文件夹包含数百个文件(称为0001_132.txt,{ {1}},0002_312.txt ...等),我需要运行一个批处理文件来提取自上次运行批处理文件以来我没有处理过的文件。

我目前的做法是保存一个0032_152.txt文件,告诉我上次更新时提取的最后一个文件的文件名。下次运行批处理文件时,它会遍历子文件夹,直到达到该特定文件名,然后开始提取比该特定文件更新的文件。

我不确定我这样做的方式是好还是不好但是它有效。但是,由于我在文件夹中有很多文件,每次批处理文件在提取新文件之前读取所有旧文件,这会导致程序运行一段时间。所以,我想问一下,如果有办法不循环使用这些旧文件?

记录上次更新文件的文件如下所示:

.txt

例如:0001_134     0002_213     。     。     0050_241

我的批次看起来像这样:

last_update.txt: format([subfoldername]_[file].txt)

1 个答案:

答案 0 :(得分:4)

如果在处理文件后使用attrib命令清除存档位,则可以使用xcopy和/ l来获取设置了存档位的新文件列表。

这是一个示例 - 假设已经处理了文件并且新文件正在等待设置存档位。最后一行在处理完文件后删除所有存档属性。

它所做的就是在下面的循环中回显每个文件的drive:\ folder \ filename.txt并设置了归档属性,并暂停。

由于正在处理的文件数量,它使用临时文件,否则会导致长时间延迟。

@echo off
dir *.txt /aa-d /b /s >file.tmp
for /f "delims=" %%a in (file.tmp) do (
rem do your task with all the files
echo "%%a"
pause
)
del file.tmp
attrib -a *.txt /s