我在尝试着删除所有驱动器上具有上述命名模式的所有文件夹,但仅限于第一个文件夹级别,即驱动器号正下方,例如:
F:\this folder's name contains FOO and should be deleted
...没有确认也没有错误消息(例如,如果没有找到文件夹),使用批处理文件。
我发现了这一点: 使用批处理文件删除名称中带有 tmp 的所有文件夹并想知道那里的解决方案是否是一个好的起点?
@echo off
set dir="c:\FOLDERLOCATION\"
FOR /D /R %dir% %%X IN (*.tmp) DO RMDIR /S /Q "%%X"
pause
exit
答案1
阅读并关注FOR
- 有条件地执行命令多次。。您可以申请FOR-文件夹, 或者FOR 命令结果如下:
FOR-文件夹(缺点:不区分大小写;通配符不允许使用类似正则表达式的模式,所以我们需要多次运行循环)。
@echo off
set "dir=c:\FOLDERLOCATION\"
pushd "%dir%"
:: ↓↓↓↓ echo for debugging
FOR /D /R %%X IN (*foo*) DO echo RMDIR /S /Q "%%~fX"
FOR /D /R %%X IN (*bar*) DO echo RMDIR /S /Q "%%~fX"
:: ↑↑↑↑ echo for debugging
popd
pause
FOR 命令结果结合findstr
(优点:findstr
独立允许区分大小写和类似正则表达式的搜索模式):
@echo off
set "dir=c:\FOLDERLOCATION\"
FOR /F "delims=" %%X IN ('dir /B/S /A:D "%dir%" ^| findstr /I "foo|bar"') DO 2>NUL echo RMDIR /S /Q "%%~fX"
:: ECHO in above line merely for debugging
pause
缺点是dir
列表是静态生成的,所以我们需要使用重定向错误消息2>NUL