请问如何用批处理删除指定路径下的特定前缀名的文件夹及里面的文件,如删除以SSAA开头的所有文件夹。

发布网友 发布时间:2022-04-24 12:10

我来回答

2个回答

热心网友 时间:2023-10-12 08:56

@echo off
setlocal enabledelayedexpansion
set p="e:\123"
set "l=500"
set "m=SSAA"
set "g=backup_"
echo 你设定的处理目录为%p%
echo 你设定的文件夹大小为"%l%mb"
echo 你设定的文件夹前缀名为"%m%"(区分大小写)
echo 文件夹改名前缀:"%g%"
echo ...
echo 正在查找%p%目录下的以%m%开头的文件夹:
pushd %p%
for /f "tokens=*" %%i in ('dir/b/ad^|findstr "\<%m%.*"') do (
for /f "tokens=3" %%j in ('dir/s "%%i"^|findstr "个文件"') do set a=%%j & set /a b=!a:,=!/1024/1024
if !b! geq %l% (
echo .
echo ..
echo ...
echo "%%i"文件夹大小约为!b!mb,大于你设定的%l%mb,如何处理?
echo 【1】 :删除
echo 【其他任意键】:改名
set/p "o=请选择: "
if "!o!"=="1" (rd "%%i"/s/q & echo 删除成功) else ren "%%i" %g%"%%i" &echo 改名成功,新文件夹名字为"%g%%%i"
) else rd "%%i"/s/q & echo "%%i"文件夹大小约为!b!mb,小于你设定的%l%mb,已删除)
)
echo .
echo ..
echo ...
echo 命令执行完成
pause


热心网友 时间:2023-10-12 08:57

@echo off&setlocal enabledelayedexpansion
set /a use=500*1
set "dst=e:\bak\"
::上一句指定文件夹
set "str=ssaa"
::上一句指定查找以字符开头的文件夹
cd /d "!dst!"
>%temp%\tmp.vbs echo result = wscript.arguments(0)/1024/1024
>>%temp%\tmp.vbs echo Wscript.Echo int(result)
for /d %%a in (!str!*) do (
set "dname=%%a"
pushd.
cd /d "%%a"
for /f "tokens=3" %%j in ('dir /-c/s^|find "个文件"') do set num=%%j
if not "%%j"=="0" (
for /f "delims=" %%n in ('cscript //nologo %temp%\tmp.vbs !num!') do (
set numm=%%n
if %%n lss !use! (
call :sc
) else (
echo %%a目录占用大于等于!use!M
call :ch
))))
del %temp%\tmp.vbs
pause
exit /b
:ch
set id=
set /p id=请选择(1、改名 or 2、删除,默认为1):
if "%id%"=="2" (goto :sc) else goto :renn
goto :eof
:sc
echo 目录%dname%共占用约%numm%M,正在删除...
popd
rd /s /q "%dname%"
goto :eof
:renn
set renname=
set /p renname=输入重命名的名称:
if exist "..\%renname%" (echo 已有%renname%目录&goto renn)
popd
ren "%dname%" "%renname%"
goto :eof

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com