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