2017-04-11 35 views
0

我有一個不需要的文件夾中有成千上萬的生成的php文件。它們都具有相同的命名結構,每個示例包含10個字符「rk9qiaLOaf.php」。如何使用蝙蝠刪除名稱中包含10個字符的所有文件?

但我不想全部刪除,因爲該文件夾包含index.php,main.php等重要文件,我不希望它們被刪除。

請問,怎樣才能刪除一個文件夾內的文件,他們都有一個批處理腳本的名稱計數爲10。感謝您閱讀我的問題。

回答

4

你可以只使用在命令提示符下:

For /F "Delims=" %A In ('Where/F "C:\Users\Aung\Documents:??????????.php"') Do @Del %A 

只需更改文件夾路徑爲合適。

編輯

遞歸版本,(可能需要一段時間)

For /F "Delims=" %A In ('Where/F /R "C:\Users\Aung" "??????????.php"') Do @Del %A 

再次只是改變了根文件夾,(使用當前目錄)作爲必要

+1

+1,非常酷。我不知道你可以用這種方式使用WHERE。該命令有多個關鍵點。 ** 1)** ***指定路徑爲***,否則WHERE將包含PATH文件夾內的文件。 ** 2)** WHERE使用不同的通配符規則,然後大多數其他命令 - WHERE將'?'視爲任意1個字符,而大多數其他命令將'?'視爲任何0或1個字符。 ** 3)** WHERE忽略短文件名(這很棒),而大多數其他命令也會匹配短名稱(導致問題)。點2和3使這個命令真的很有用:-)感謝張貼。 – dbenham

+0

多好的CMD大師。使用此代碼處理後,成千上萬的垃圾文件在一秒之內消失了。但是有了路徑,它顯示的圖案不匹配,可能是它之間的空白。 我去根目錄並試過 ---> For/F「Delims =」%A In('Where/F「?????????。php」')Do @Del% A <--- 完美!非常感謝 。 –

+0

僅當沒有包含10個字符的文件名時纔會出現「不匹配」消息。該消息不會發送到stderr並且是無害的,_(我發現它比沒有更有用)_。作爲編輯,我還包括了一個遞歸搜索的附加選項。 – Compo

1

你可以同時使用dirfindstr來篩選正確的文件:

dir /B /A:-D "*.php" | findstr /I "^..........\.php$" 

每個點.單個字符相匹配。 ^$確保匹配整個文件名。

for /F "delims=" %F in ('dir /B /A:-D "*.php" ^| findstr /I "^..........\.php$"') do @del "%F" 

還是這個批處理文件:

要刪除發回的文件,在命令提示符下cmd使用

for /F "delims=" %%F in ('dir /B /A:-D "*.php" ^| findstr /I "^..........\.php$"') do del "%%F" 

這裏是一種替代批處理文件的方法依靠on sub-string expansion

@echo off 
setlocal DisableDelayedExpansion 
for /F "delims=" %%F in ('dir /B /A:-D "*.php"') do (
    set "NAME=%%~nF" & set "EXT=%%~xF" 
    setlocal EnableDelayedExpansion 
    rem // Check whether file name is not longer than 10 characters: 
    if "!NAME!"=="!NAME:~,10!" (
     rem // Check whether file name is longer than 9 characters: 
     if not "!NAME:~9!"=="" (
      del "!NAME!!EXT!" 
     ) 
    ) 
    endlocal 
) 
endlocal 
相關問題