返回列表 发帖

[文件管理] 批处理批量删除文件(测试版)

用于删除一些比较“秘密”的文件的,从操作过程看,估计是很难恢复了。有点复杂和罗嗦,不过在没有遇到新问题之前暂时不修改了,大家帮忙测试吧,但是要注意数据安全哦!~

1、清除属性的那一步比较耗时,如果你的文件不存在特殊属性的不必操作,按【N】跳过。
2、最后弹出的一个新cmd窗口会自动关闭,不要自己去关掉。——一个毛病,不过不想改了。
3、直接在程序所在位置执行清除的输入【YES】执行,不过本程序会被删掉。清除指定路径需输入路径。
4、不放心可以先建立一个文件夹来测试,然后到%temp%下检查看。有些bug有待改善。
@echo off&setlocal enabledelayedexpansion&title 批量删除文件(测试版)
::by cjiabing&::date 2011.7.23
::其实很简单的问题,给我弄复杂了,不过懒得改了,能用就行。
::程序操作过程:修改系统日期和时间——清除文件属性——清除文件内容——修改文件名称——转移文件到临时文件夹——删除文件
::修改了系统日期,如果第二窗口无法修复,请自己手动修复。
::更好的设想是,输入需要删除的文件或目录,然后直接执行即可,不必绕太多弯子了。
::使用须自担风险,对于使用过程中造成的数据损失本人概不负责。
echo.
echo,
echo.                            批量删除文件(测试版)
echo,
echo,++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
echo,    运行后将批量修改和删除程序所在目录的所有文件。
echo     执行删除当前目录所有文件时,本程序亦被删除,请另外备份。
echo,    可用于“粉碎”文件,可能无法恢复,不过作用有待观察。
echo,    使用须自担风险,对于使用过程中造成的数据损失本人概不负责。
echo.    1、首先清除文件的隐藏、系统、只读等三种属性,费时;
echo     2、然后清空文件内容;
echo     3、然后修改文件名称;
echo     4、最后转移删除文件。
echo,++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
echo,    ★★★危险操作,请谨慎执行!★★★
echo,
set /p "pd=    当前目录执行确认【YES】或输入指定路径:"
if /i !pd!==YES (set "pd=%~0"&goto clean)
if exist !pd! goto clean
echo     输入失败!
pause>nul
exit
:Clean
(
if exist "!pd!\." dir /a:d /b "!pd!"&&set "pt=!pd!"||for /f "tokens=*" %%a in ("!pd!") do set "pt=%%~dpa"
)>nul 2>nul
set tm=%time:~0,5%
set dt=%date:~0,10%
echo,
ECHO     执行路径:!pt!
echo,    日期:%dt%  ;时间:%tm%
echo,
set /p ttt=    再次确认【OK】:
if %ttt%==OK goto cleaner
exit
:Cleaner
title 批量删除文件
echo.
echo,    第一步:清除文件内容和属性中……
echo,
set /P ql=     是否清理文件属性,清理【Y】不清理【N】:
if /i %ql%==y (set qll=1) else (set qll=0)
:C1
date 2008-04-14
time 20:00
for /f "tokens=*" %%a in ('dir /b /s /a !pt!\*.*') do if /i not "%%~a"=="%~0" (
    if !qll!==1 attrib -s -h -r "%%~a"
    break>"%%~a"&echo     %%a
)
echo,
echo.
echo,    第二步:改名
echo,
CD /D !pt!
set nb=0
for /r  %%a in (*) do  if /i not "%%~a"=="%~0" (
    set /a nb+=1
    if exist !nb! (
        set /a nb+=1
        if exist !nb! set /a nb=1+10
        ren "%%~a" !nb!
    ) else (ren "%%~a" !nb!)
)
for /d   %%a in (*) do  if /i not "%%~a"=="%~0" (
    set /a nb+=1
    if exist !nb! (
        set /a nb+=1
        if exist !nb! set /a nb=1+10
        ren "%%~a" !nb!
    ) else (ren "%%~a" !nb!)
)
echo,
call :C3
echo;
echo,
echo.    继续下一步,完成处理!
echo,
del /q /f /a /s "!pt!"
rd /s /q "!pt!"
exit
:C3
echo.
echo,    第三步:转移删除
echo,
for /r %%a in (*) do  if not "%%~a"=="%pd%" move /y "%%~a" "%temp%"&echo     %%a
echo ^@echo off^&setlocal enabledelayedexpansion>"%temp%\AUT0EXEC.BAT"
ECHO set nm=^0>>"%temp%\AUT0EXEC.BAT"
ECHO ECHO 请稍等……>>"%temp%\AUT0EXEC.BAT"
echo rd /s /q "!pt!">>"%temp%\AUT0EXEC.BAT"
echo del /a /s /q /f "!pt!">>"%temp%\AUT0EXEC.BAT"
ECHO CALL :1>>"%temp%\AUT0EXEC.BAT"
echo date %dt%>>"%temp%\AUT0EXEC.BAT"
echo time %tm%>>"%temp%\AUT0EXEC.BAT"
ECHO ECHO 清理结束,自动关闭!>>"%temp%\AUT0EXEC.BAT"
echo ping /n 3 127.0.1^>nul>>"%temp%\AUT0EXEC.BAT"
::ECHO REN "%temp%\AUT0EXEC.BAT" ^1>>"%temp%\AUT0EXEC.BAT"
ECHO EXIT>>"%temp%\AUT0EXEC.BAT"
ECHO :1>>"%temp%\AUT0EXEC.BAT"
ECHO for /l %%%%a in (1,1,100000) do if exist "%temp%\%%%%a" (del /q /f /a "%temp%\%%%%a"^&set nm=0) else (set /a nm+=1^&if ^^!nm^^! gtr 41 goto :eof)>>"%temp%\AUT0EXEC.BAT"
ECHO GOTO :EOF>>"%temp%\AUT0EXEC.BAT"
start /WAIT "" "%temp%\AUT0EXEC.BAT"
goto :eofCOPY
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

简单的
@echo off
set `=%*
setlocal enabledelayedexpansion
for %%i in (%`%) do (
    del /q /a /f %%~si >nul 2>nul
    rd /q /s %%~si >nul 2>nul
)

TOP

谢谢分享!!

TOP

顶,不错   !!!!!!!!!!!!!

TOP

返回列表