我的批处理文件的代码是:
for /f "delims=" %%f in (7profiledeletelist.txt) do rd /s /q "%%f"
PAUSE
exit
在“7profiledeletelist.txt”中,有:(将被删除)
C:\Users\1* (I tried *.* it didnt work)
C:\Users\2* (I tried *.* it didnt work)
C:\Users\3* (I tried *.* it didnt work)
C:\Users\4* (I tried *.* it didnt work)
C:\Users\5* (I tried *.* it didnt work)
C:\Users\6* (I tried *.* it didnt work)
C:\Users\7* (I tried *.* it didnt work)
C:\Users\8* (I tried *.* it didnt work)
C:\Users\9* (I tried *.* it didnt work)
C:\Users\M* (I tried *.* it didnt work)
C:\Users\T* (I tried *.* it didnt work)
但是通过这个 7profiledeletelist.txt ,bat文件无法删除任何内容。如果我删除*并且如果我写出确切的名称它运行良好。我想删除所有以M-T开头的文件夹和用户中的1到9。如何更改“7profiledeletelist.txt”或批处理脚本。批处理脚本中是否存在错误代码?提前谢谢:(
我们可以在此批次中添加排除文件夹(例如文件夹325和文件夹265),不要删除吗?
答案 0 :(得分:2)
rd
将不接受通配符,因此,需要将通配符转换为对文件夹的完整引用。使用其他for
for /f "delims=" %%f in (7profiledeletelist.txt) do (
for /d %%a in ("%%f") do rd /s /q "%%~fa"
)
已修改以适应评论。如何排除流程中的文件夹
(
cmd /q /c "(for /f "delims=" %%f in (7profiledeletelist.txt) do for /d %%a in ("%%f") do echo(%%~fa)"
) | (
for /f "delims=" %%a in ('findstr /l /v /g:exclude.txt') do @rd /s /q "%%a"
)
第一个命令将生成所有文件夹的列表,第二个命令将过滤此列表,过滤掉exclude.txt
文件中指示的文件夹。此文件需要包含每个已排除文件的行。实际要求将决定行的格式或findstr
命令的参数。