|
|
发表于 2012-12-2 10:23:20
|
显示全部楼层
现在的问题是你那些文件不是在同一目录下,这个是比较困难和耗时的部分。
我的想法是:先将要删除的文件名输出到一个文本a.txt,再将所有文件的完整路径输出到一个文本b.txt,然后用findstr根据这两个文件将需要删除的文件的完整路径取到另一个文本c.txt,最后用for/f循环删除所有需要删除的文件,虽然在多数情况下,临时文件是不推荐的,但这种情况下用临时文件应该是比较好的方式。
- @echo off
- ::将下一行的crc32.txt替换为实际的文件名
- (for /f "tokens=1*" %%a in (crc32.txt) do (
- if defined %%a (echo,%%b) else set %%a=1
- ))>a.txt
- dir /s /b /a-d>b.txt
- findstr /i /g:a.txt b.txt>c.txt
- for /f "delims=" %%a in (c.txt) do del /a "%%a"
- del a.txt b.txt c.txt
复制代码 将crc32的校验结果文件和本bat文件一起放到要处理的文件夹的顶层目录,然后运行这个批处理即可。
必须满足:
1.校验结果文件格式要工整,每一行第一列必须为校验码,空格或tab后为文件名;
2.任何子目录不能取名为校验结果文件中的任何一个文件名; |
|