2013-03-22 67 views
0

我想删除只有数字名称的所有文件夹。 所以我写的使用正则表达式的批处理文件:批处理文件删除具有特殊名称的文件夹

@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 

,但它不工作。错误在哪里?

回答

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

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

for /d简单地将dirnames应用于元变量。

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
+0

什么意思是“%%〜nxd”“> nul” “%%〜fd”? – rich 2013-03-22 12:49:32

+0

@丰富查看更新的答案。 – 2013-03-22 13:28:08

相关问题