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