我有一個不需要的文件夾中有成千上萬的生成的php文件。它們都具有相同的命名結構,每個示例包含10個字符「rk9qiaLOaf.php」。如何使用蝙蝠刪除名稱中包含10個字符的所有文件?
但我不想全部刪除,因爲該文件夾包含index.php,main.php等重要文件,我不希望它們被刪除。
請問,怎樣才能刪除一個文件夾內的文件,他們都有一個批處理腳本的名稱計數爲10。感謝您閱讀我的問題。
我有一個不需要的文件夾中有成千上萬的生成的php文件。它們都具有相同的命名結構,每個示例包含10個字符「rk9qiaLOaf.php」。如何使用蝙蝠刪除名稱中包含10個字符的所有文件?
但我不想全部刪除,因爲該文件夾包含index.php,main.php等重要文件,我不希望它們被刪除。
請問,怎樣才能刪除一個文件夾內的文件,他們都有一個批處理腳本的名稱計數爲10。感謝您閱讀我的問題。
你可以只使用在命令提示符下:
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
再次只是改變了根文件夾,(使用。當前目錄)作爲必要。
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
+1,非常酷。我不知道你可以用這種方式使用WHERE。該命令有多個關鍵點。 ** 1)** ***指定路徑爲***,否則WHERE將包含PATH文件夾內的文件。 ** 2)** WHERE使用不同的通配符規則,然後大多數其他命令 - WHERE將'?'視爲任意1個字符,而大多數其他命令將'?'視爲任何0或1個字符。 ** 3)** WHERE忽略短文件名(這很棒),而大多數其他命令也會匹配短名稱(導致問題)。點2和3使這個命令真的很有用:-)感謝張貼。 – dbenham
多好的CMD大師。使用此代碼處理後,成千上萬的垃圾文件在一秒之內消失了。但是有了路徑,它顯示的圖案不匹配,可能是它之間的空白。 我去根目錄並試過 ---> For/F「Delims =」%A In('Where/F「?????????。php」')Do @Del% A <--- 完美!非常感謝 。 –
僅當沒有包含10個字符的文件名時纔會出現「不匹配」消息。該消息不會發送到stderr並且是無害的,_(我發現它比沒有更有用)_。作爲編輯,我還包括了一個遞歸搜索的附加選項。 – Compo