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