2013-03-22 65 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

相關問題