我在一个不需要的文件夹中有数千个生成的php文件。它们都具有10个字符的相同命名结构,每个例子为“rk9qiaLOaf.php”。
但我不想删除所有,因为该文件夹包含index.php,main.php等重要文件,我不希望它们被删除。
请问,如何通过批处理脚本删除文件夹中的文件,这些文件的名称数量为10。感谢您阅读我的问题。
答案 0 :(得分: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)
您可以将https://laracasts.com/discuss/channels/servers/how-to-perform-php-artisan-schedulerun-on-an-ubuntu-server-with-laravel-53-for-cron-jobs?page=1与dir
一起使用来过滤正确的文件:
dir /B /A:-D "*.php" | findstr /I "^..........\.php$"
每个点.
都匹配一个字符。 ^
和$
确保匹配整个文件名。
要删除返回的文件,请在命令提示符cmd
中使用:
for /F "delims=" %F in ('dir /B /A:-D "*.php" ^| findstr /I "^..........\.php$"') do @del "%F"
或者在批处理文件中:
for /F "delims=" %%F in ('dir /B /A:-D "*.php" ^| findstr /I "^..........\.php$"') do del "%%F"
以下是依赖findstr
的替代批处理文件方法:
@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