Board logo

标题: [文本处理] [分享]批处理版文件清空处理工具 [打印本页]

作者: zfkzp    时间: 2011-7-21 21:14     标题: [分享]批处理版文件清空处理工具

本帖最后由 zfkzp 于 2011-7-21 21:45 编辑
名称:文件清空(零)工具
用途:用于清空一些(重要)文件,使之还原过来是0K(也就是空文件),达到类似于“清空”的目的。但是需要说明的是,这个工具不是粉碎文件用的,是清空(零)用的。所以,请大家不要混淆。
原理:
相对专业的说法
微软windows系统的dos环境下,有一个文本内容写入的功能,而一般情况下,是用">"来直接覆盖文件内容,或者创建一个新文件并且把内容写入与新文件里;用“>>”来追加新的内容。而微软却给我们一个新思路,利用">"的功能,使其生成的占位符,覆盖源文件的内容,而达到清空文件的效果。
相对于通俗易懂的说法
现在,动手的时候到了,先自己制作一个体积比较大的文件,或者找一个没用的电影文件。请各位点击“开始菜单”-点击“运行”,在运行框里面填入“cmd”点击“确定”,在弹出的黑漆漆的框框里面填入“break >"你找好的文件的名字和路径"”。敲回车,不要太用力,否则敲坏了我可赔不起。再打开看看你刚才那个文件的属性体积,多少?大声点!“0kB!”是零KB呀!没错,这句就是本工具的核心代码了。不懂什么是“开始菜单”的去百度去吧,上面有非常详细的介绍,别在下面瞎叫!
制作原因:原因很简单,为方便自己的需要,也是分享一下自己的笨拙之见。
优点
无需windows系统的特殊权限,一个普通权限的用户就可以使用,只要被处理的文件在权限范围之内。方便简单,无需因为找一款好的文件删除工具,工具自带删除功能(虽然觉得有点多余)。
缺点
在处理目录的时候没办法解锁。没办法判断系统进程。对于没有权限的文件局限性很大。对文件多的目录处理时在解除属性的时候很费时间。而且还可能存在一些Bug。
以上所说的优点缺点,是本人对此工具的拙见,欢迎各位给在下指正错误。
特别说明:如果有时间的话,我会对其进行改进的。感谢批处理之家!本工具的版权归批处理之家,只有论坛里面的朋友可以拿去修改,改进。但是:期间因为操作不慎所造成的文件丢失,数据损毁等事故,与本人没有半毫厘的关系。
批处理之家-zfkzp
下面是代码
  1. @echo off
  2. color a &cls &title 文件清空处理工具 BY:批处理之家-zfkzp 工具很危险,操作需谨慎!
  3. :start1
  4. echo 本操作很危险,请谨慎操作!否则出现的任何后果,本人不负任何责任!
  5. ping localhost >nul & cls
  6. @echo Warning(提醒!)
  7. @echo 1、请勿什么都不填写直接按回车,否则后果很严重!非专业人士请不要随便填写系统路径,如:X:\windows\、X:\prgramfiles\。
  8. @echo 2、目前不支持系统常量作为路径处理,举例%temp%应该改为C:\DOCUME~1\username\LOCALS~1\Temp或者更完整的路径。
  9. @echo 3、如果有文件名是cmd.exe之类的系统文件的请自行重命名。
  10. @echo 无视以上提醒而操作,而导致的数据损坏的,跟本人无关。
  11. @echo 请输入需要处理的文件(夹):
  12. set/p a=
  13. dir "%a%" /a:d
  14. if %errorlevel% == 0 (cls & goto folder) else (cls & goto file)
  15. echo ERROR.&pause
  16. if not exist "%a%" (echo Windows找不到%a%,请确认文件路径是否!) else (echo Windows找到%a%!)
  17. pause
  18. goto start1
  19. :file
  20. 正在处理:%a% & ping loaclhost >nul
  21. attrib -s -r -h -a "%a%" & cacls "%a%" /t /e /c /g %username%:f
  22. for %%i in ("%a%") do taskkill /f /im %%~nxi
  23. break >"%a%"
  24. del /s /q /f /a "%a%"
  25. ::这里是解锁文件,以及清空文件。注意,可以被解锁的只有可执行文件(如:*.exe、*.bat *.cmd *.com)罢了,其他的就暂时没办法。
  26. echo 下面我们将打开目标文件所在路径。
  27. for %%i in ("%a%") do start explorer "%%~dpi"
  28. ping localhost >nul
  29. exit /b
  30. :folder
  31. echo 正在处理:%a%
  32. echo Warning! 文件夹的内容太多的时候到这里会出现类似卡住的现象,实际上是在工作的,请不要关闭。
  33. echo pushd ^%a^%
  34. for /f "delims=" %%i in ('dir /b /a-d /s "%a%\*.*"') do attrib -s -r -h -a "%%i"
  35. cacls %a% /t /e /c /g %username%:f & attrib -s -r -h -a %a%
  36. for /f "delims=" %%i in ('dir /b /a-d /s "%a%\*.*"') do (for %%i in ("%%i") do taskkill /f /im %%~nxi)
  37. for /f "delims=" %%i in ('dir /b /a-d /s "%a%\*.*"') do break > %%i
  38. if %errorlevel% equ 0 (cls & @echo 处理完成) else (cls & @echo 处理未完成) &ping loaclhost >nul
  39. for /f "delims=" %%i in ('dir /b /a-d /s "%a%\*.*"') do rename "%%i" %RANDOM%%RANDOM%%RANDOM%.%RANDOM% & cls
  40. rd /s /q "%a%"
  41. del /s /q /f /a "%a%"\*.*
  42. cls
  43. echo 下面我们将打开目标文件夹。
  44. for %%i in ("%a%") do start explorer "%%~dpi"
  45. ping localhost >nul
  46. exit /b
复制代码

作者: bluewing009    时间: 2011-7-21 21:24

需要改进的东西不少……
另:怀疑这种真的能“使之无法还原”?只要没有去写磁盘,还是能还原的…………
作者: CUer    时间: 2011-7-21 21:28

你测试了哪些方法来验证“无法还原”?
网上能下载到的数据恢复软件有很多
维修店里面的专业工具就更多了
软件搞不定的还可以拿到无尘室里面开盘

不要随便写几行代码就声称能处理机密(重要)文件了好么。
作者: Batcher    时间: 2011-7-21 21:32

1、请勿什么都不填写直接按回车,否则后果很严重!

建议对用户的输入进行合法性验证
作者: zfkzp    时间: 2011-7-21 21:38

本帖最后由 zfkzp 于 2011-7-21 21:48 编辑

2# bluewing009


好,我问你,一个文本,原来有90K,没有备份,我打开他,删了内容,也就是只有0K了,这时候,再删除了他,你在用恢复软件恢复试试,试一下恢复过来有几K。
需要改进的地方还是和改进的,请指教。
作者: zfkzp    时间: 2011-7-21 21:38

本帖最后由 zfkzp 于 2011-7-21 21:47 编辑

3# CUer

好,我问你,一个文本,原来有90K,没有备份,我打开他,删了内容,也就是只有0K了,这时候,再删除了他,你在用恢复软件恢复试试,试一下恢复过来有几K。
这个我在虚拟机和真实机上同时做过将尽一个月的实验,还原的都是空文件,没有原来文件的内容。
作者: zfkzp    时间: 2011-7-21 21:39

4# Batcher


要验证的东西太多了,我想在之后进行修改。
作者: mxxcgzxxx    时间: 2011-7-21 22:20

6# zfkzp


可以还原的!还原软件的原理很多种,只改个名,修改下内容是不会破坏原有内容的,甚至格式化两三次都可以还原的,如果有点磁盘知识的话很容易理解的!

对你这个方法有点疑问?0KB,然道不破坏原文件格式吗?是0KB的后辍像BMP、JPG的TXT文本还是0KB的BMP这是有很大的区别的!
有很多文件用系统右键新建方式都无法正常创建的,只能用软件自己新建。
作者: CrLf    时间: 2011-7-21 22:30

本帖最后由 CrLf 于 2011-7-22 00:12 编辑

重定向清空文件的时候是没有延时的,可以想象一下,这个文件对应的几百兆磁盘信息的东西难道在这一瞬间都被覆盖了?不可能吧,现在的家用硬盘读取速度都没这么快。重定向要么只是覆盖了文件头部的一点点内容,要么根本就只是修改了文件映射表中文件名与硬盘位置的对应关系,不过无论是采用哪种方式,都必定会留下许多未覆盖的磁盘信息,只不过这些信息是不被当成文件的看待的,所以虽然看起来删了,其实大部分东西都还在呢...
作者: CUer    时间: 2011-7-21 22:38

6# zfkzp


不用问我,你和我在数据恢复方面还都是没有入门的人呐。
作者: bluewing009    时间: 2011-7-21 22:54     标题: 标题

5# zfkzp


推荐你这样测试:
1找个空白U盘
2全盘写入00,并确定一直是00
3存入目标文件
4用你的方法“删除”
5查看磁盘,用随便十六进制查看,其它磁盘查看器也可以
6对比此时的和文件的十六进制

你发现了什么?
真正的删除机密文件是需要00-FF复写多次的。

你所谓的不能恢复,估计是找了一些软件吧,不过数据还是在磁盘上。
作者: zfkzp    时间: 2011-7-21 23:24

本帖最后由 zfkzp 于 2011-7-21 23:29 编辑

11# bluewing009


所言极是,不过,对付危险文件,我一般就是这样先清零啊。我认为应该用这样的方法会比windows删除更安全的。
而且,你说的是,给硬盘写零,我说的是更改文件内容,使之内容变成空的。
就好比文件是比硬盘更小的小容器,盛装的数据。然后我给文件清零,相当于从容器里面把数据倒出来。文件就空了,也只是留下空壳而已。
以上就是我个人对硬盘文件储存的见解。至于空壳文件,我希望要用什么去擦写,只希望让别人看不到原来被销毁的文件是什么。
作者: zfkzp    时间: 2011-7-21 23:30

10# CUer


嗯,没错。谢谢指点。
作者: zfkzp    时间: 2011-7-21 23:32

9# CrLf

原来是这样,谢谢了。
作者: zfkzp    时间: 2011-7-21 23:33

8# mxxcgzxxx

有道理。谢谢提醒。
作者: Hello123World    时间: 2011-7-23 15:08

I Love Batch as love my life!——楼主对批处理很有爱,共同提高!




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