Board logo

标题: [文件管理] 批处理批量删除文件(测试版) [打印本页]

作者: cjiabing    时间: 2011-8-3 16:43     标题: 批处理批量删除文件(测试版)

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

1、清除属性的那一步比较耗时,如果你的文件不存在特殊属性的不必操作,按【N】跳过。
2、最后弹出的一个新cmd窗口会自动关闭,不要自己去关掉。——一个毛病,不过不想改了。
3、直接在程序所在位置执行清除的输入【YES】执行,不过本程序会被删掉。清除指定路径需输入路径。
4、不放心可以先建立一个文件夹来测试,然后到%temp%下检查看。有些bug有待改善。
  1. @echo off&setlocal enabledelayedexpansion&title 批量删除文件(测试版)
  2. ::by cjiabing&::date 2011.7.23
  3. ::其实很简单的问题,给我弄复杂了,不过懒得改了,能用就行。
  4. ::程序操作过程:修改系统日期和时间——清除文件属性——清除文件内容——修改文件名称——转移文件到临时文件夹——删除文件
  5. ::修改了系统日期,如果第二窗口无法修复,请自己手动修复。
  6. ::更好的设想是,输入需要删除的文件或目录,然后直接执行即可,不必绕太多弯子了。
  7. ::使用须自担风险,对于使用过程中造成的数据损失本人概不负责。
  8. echo.
  9. echo,
  10. echo.                            批量删除文件(测试版)
  11. echo,
  12. echo,++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  13. echo,    运行后将批量修改和删除程序所在目录的所有文件。
  14. echo     执行删除当前目录所有文件时,本程序亦被删除,请另外备份。
  15. echo,    可用于“粉碎”文件,可能无法恢复,不过作用有待观察。
  16. echo,    使用须自担风险,对于使用过程中造成的数据损失本人概不负责。
  17. echo.    1、首先清除文件的隐藏、系统、只读等三种属性,费时;
  18. echo     2、然后清空文件内容;
  19. echo     3、然后修改文件名称;
  20. echo     4、最后转移删除文件。
  21. echo,++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  22. echo,    ★★★危险操作,请谨慎执行!★★★
  23. echo,
  24. set /p "pd=    当前目录执行确认【YES】或输入指定路径:"
  25. if /i !pd!==YES (set "pd=%~0"&goto clean)
  26. if exist !pd! goto clean
  27. echo     输入失败!
  28. pause>nul
  29. exit
  30. :Clean
  31. (
  32. if exist "!pd!\." dir /a:d /b "!pd!"&&set "pt=!pd!"||for /f "tokens=*" %%a in ("!pd!") do set "pt=%%~dpa"
  33. )>nul 2>nul
  34. set tm=%time:~0,5%
  35. set dt=%date:~0,10%
  36. echo,
  37. ECHO     执行路径:!pt!
  38. echo,    日期:%dt%  ;时间:%tm%
  39. echo,
  40. set /p ttt=    再次确认【OK】:
  41. if %ttt%==OK goto cleaner
  42. exit
  43. :Cleaner
  44. title 批量删除文件
  45. echo.
  46. echo,    第一步:清除文件内容和属性中……
  47. echo,
  48. set /P ql=     是否清理文件属性,清理【Y】不清理【N】:
  49. if /i %ql%==y (set qll=1) else (set qll=0)
  50. :C1
  51. date 2008-04-14
  52. time 20:00
  53. for /f "tokens=*" %%a in ('dir /b /s /a !pt!\*.*') do if /i not "%%~a"=="%~0" (
  54.     if !qll!==1 attrib -s -h -r "%%~a"
  55.     break>"%%~a"&echo     %%a
  56. )
  57. echo,
  58. echo.
  59. echo,    第二步:改名
  60. echo,
  61. CD /D !pt!
  62. set nb=0
  63. for /r  %%a in (*) do  if /i not "%%~a"=="%~0" (
  64.     set /a nb+=1
  65.     if exist !nb! (
  66.         set /a nb+=1
  67.         if exist !nb! set /a nb=1+10
  68.         ren "%%~a" !nb!
  69.     ) else (ren "%%~a" !nb!)
  70. )
  71. for /d   %%a in (*) do  if /i not "%%~a"=="%~0" (
  72.     set /a nb+=1
  73.     if exist !nb! (
  74.         set /a nb+=1
  75.         if exist !nb! set /a nb=1+10
  76.         ren "%%~a" !nb!
  77.     ) else (ren "%%~a" !nb!)
  78. )
  79. echo,
  80. call :C3
  81. echo;
  82. echo,
  83. echo.    继续下一步,完成处理!
  84. echo,
  85. del /q /f /a /s "!pt!"
  86. rd /s /q "!pt!"
  87. exit
  88. :C3
  89. echo.
  90. echo,    第三步:转移删除
  91. echo,
  92. for /r %%a in (*) do  if not "%%~a"=="%pd%" move /y "%%~a" "%temp%"&echo     %%a
  93. echo ^@echo off^&setlocal enabledelayedexpansion>"%temp%\AUT0EXEC.BAT"
  94. ECHO set nm=^0>>"%temp%\AUT0EXEC.BAT"
  95. ECHO ECHO 请稍等……>>"%temp%\AUT0EXEC.BAT"
  96. echo rd /s /q "!pt!">>"%temp%\AUT0EXEC.BAT"
  97. echo del /a /s /q /f "!pt!">>"%temp%\AUT0EXEC.BAT"
  98. ECHO CALL :1>>"%temp%\AUT0EXEC.BAT"
  99. echo date %dt%>>"%temp%\AUT0EXEC.BAT"
  100. echo time %tm%>>"%temp%\AUT0EXEC.BAT"
  101. ECHO ECHO 清理结束,自动关闭!>>"%temp%\AUT0EXEC.BAT"
  102. echo ping /n 3 127.0.1^>nul>>"%temp%\AUT0EXEC.BAT"
  103. ::ECHO REN "%temp%\AUT0EXEC.BAT" ^1>>"%temp%\AUT0EXEC.BAT"
  104. ECHO EXIT>>"%temp%\AUT0EXEC.BAT"
  105. ECHO :1>>"%temp%\AUT0EXEC.BAT"
  106. 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"
  107. ECHO GOTO :EOF>>"%temp%\AUT0EXEC.BAT"
  108. start /WAIT "" "%temp%\AUT0EXEC.BAT"
  109. goto :eof
复制代码

作者: 路过    时间: 2012-10-20 16:11

简单的
@echo off
set `=%*
setlocal enabledelayedexpansion
for %%i in (%`%) do (
    del /q /a /f %%~si >nul 2>nul
    rd /q /s %%~si >nul 2>nul
)
作者: hnldwhm52    时间: 2014-9-11 12:17

谢谢分享!!
作者: pkcc110    时间: 2014-9-26 12:20

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




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2