请问如何用批处理删除指定路径下的特定前缀名的文件夹及里面的文件,如删除以SSAA开头的所有文件夹。
但是在删除前检测当特定的前缀名文件夹大于500M时则让用户选择删除或者重命名,用数字1或2选择。小于500M则自动删除。...
但是在删除前检测当特定的前缀名文件夹大于500M时则让用户选择删除或者重命名,用数字1或2选择。小于500M则自动删除。
展开
展开全部
@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
展开全部
@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
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询