我是编写批处理文件的新手,我需要编写一个以删除文件列表。我需要批处理脚本首先找到文件(它们都位于同一驱动器中的不同文件夹中),然后删除所有文件。有没有办法可以编写批处理脚本来查找列表中的文件,然后自动删除它们?
道歉这个问题基本如何 - 我完全不确定如何完成这项任务!
答案 0 :(得分:0)
@echo off
for /f "tokens=*" %%i in (list.txt) do (
for /f "tokens=*" %%j in ('dir /s /b /a-d "c:\%%i"') do echo del "%%j"
)
如果输出满足您的话,请删除echo
。
获取列表中的每个文件名(%% i)
。获取此文件名的每个完整路径(%% j)(在磁盘中搜索)并删除它。
注意:这不是很快 - 在整个磁盘上搜索每个文件名都需要一段时间。
如果列表中有很多文件名,最好只构建一次完整的目标树并将其写入文件(dir /s /c /a-d >diskcontent.txt
),使用该文件而不是每次搜索磁盘文件。
dir-parameters:/s
在所有子目录中搜索,/b
使用的格式为您提供完整路径,/a-d
排除目录名; c:\
从驱动器C:
修改强>
如果您的list.txt
包含空格(在文件名中或在给定路径中),您有以下几种选择:
pushd "C:\path to\my file"
for /f "tokens=*" %%i in (list.txt) do (
或
for /f "tokens=*" %%i in ('type "C:\path to\my file\list.txt"' ) do (
或
for /f "usebackq tokens=*" %%i in ("C:\path to\my file\list.txt") do (