批处理文件删除具有特殊名称的文件夹

时间:2013-03-22 08:13:22

标签: regex batch-file cmd

我想删除所有仅包含数字名称的文件夹。 所以我使用正则表达式编写批处理文件:

@echo off

D:
cd D:\Install\Work

for /d %%i in (*|findstr "^[0-9]*$") do (
      rd /s /q %%i
)

echo [all the folders under work are deleted!]

pause

但它不起作用。错误在哪里?

2 个答案:

答案 0 :(得分:0)

@ECHO OFF
SETLOCAL
FOR /f %%x IN (
 'dir /ad /b * ^|FINDSTR "^[0-9]*$" '
 ) DO ECHO %%x

FOR /F从文件/命令输出中读取行到元变量。

for /d只是将dirnames应用于元变量。

答案 1 :(得分:0)

试试这个:

@echo off

for /r D:\Install\Work %%d in (.) do (
  echo %%~nxd|findstr "^[0-9]*$" >nul && rd /s /q "%%~fd"
)

请注意,这将删除全数字文件夹,即使它们包含名称不仅包含数字的其他文件夹!

  • %%~nxd:从%%d ~移除附加双引号,并展开名称(n)和扩展名(x
  • >nul:抑制STDOUT上的输出
  • %%~fd:从%%d~)中移除附加双引号并展开完整路径(f