[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[特效代码] 批处理中的转义符为何把内存在十秒之内会用得精光

@echo off
>>a.txt echo ^%^%

运行上面这段代码你会发现你电脑的内存十秒之内会用得精光,  天呀太恐怖了! 哪个能解释这是为什么  这应当是批处理最简短的一个病毒写法吧晕晕

再试试
echo ^%^%>>a.txt
却没有出现这个现像


还有关于为什么批处理在DOS窗口 "%i"   要写成"%%i"的原因:

“ % ”    要写入文本不能用“^ ”  转义     要用“%”来转义  如:
echo.%%i>a.bat   
打开a.bat   
你会发现   只一个%i    这因当是批处理文本为什么%i 要写成%%i的真正原因吧

[ 本帖最后由 x9tiancmd 于 2009-4-30 20:21 编辑 ]
2

评分人数

    • CrLf: 恐怖的结果技术 + 1
    • wxcute: 有意思的发现。PB + 5

>>a.txt echo ^%^%
谁能解释下这 个运行为什么会出现内存一下耗光的情况  呀   

知道的说下嘛

TOP

是不是把磁盘剩下的文件全都写进去?
猜想:转义结尾符

echo ^%^%>>a.txt
却没有出现这个现像
因为只转义了一个>符号

TOP

对NULL字符转义的结果吧,你确定echo ^%^%后面无任何内容了吗? 任何,包括回车或者其他空白字符。
心绪平和,眼藏静谧。

TOP

我到虚拟机里面用空白虚拟磁盘试下   

等下有了结果再来回复下   嘿嘿

TOP

虚拟机试了没是 但是我这就是运行就内存十秒内用个精光, 真是怪事来了

我就复制上面的代码保存为BAT(附件里有) 运行的,   不信你们自忆试下嘛,  真的太恐怖了

[ 本帖最后由 x9tiancmd 于 2009-4-30 20:57 编辑 ]

TOP

测试了下,确实是的,好像是因为echo后没有换行,至于为什么这样就不知道了,好像形成了个死循环。难道是因为转义符号没东西转?
技术问题请到论坛发帖求助!

TOP

因当不是死循环,   你多加入一条命令 (红色的)
@echo off
>a.txt  echo.^%
>>a.txt  echo.^%^%

你运行这个,  它根本就没有创建a.bat  出来呀,,   你说这不是怪了,死循环最少也会创建“a.bat”吧

TOP

原帖由 随风 于 2009-4-30 21:55 发表
测试了下,确实是的,好像是因为echo后没有换行,至于为什么这样就不知道了,好像形成了个死循环。难道是因为转义符号没东西转?


我猜是因为^后边没回车,执行时转义破坏了textfile的eof标志,因为标志的最后一个ascii码是0x13
而使用追加符又跳过了行输出长度检查,所以造成批处理一直往缓存空字符
2

评分人数

TOP

我这儿内存倒是不会被用光,只是严重影响了运行速度。

echo ^%^% 先把 ^ 当作变量解释,变量 ^ 未定义,因此等同于 echo ^
>>a.txt echo ^%^% 等同于 >>a.txt echo ^
批处理之家论坛官方 QQ 群 :【当前人数/人数上限】【2009-07-08】
群①:43011867(181/200);群②:(暂缺数据);群③:66165582(120/200)。

TOP

嗯  楼上的说法好像蛮有理的,   呵呵,,  学习了谢谢


    难道说,  这echo     是:  先写入内存, 再生成 a.bat ?   然后再把内存的数据写入a.bat  ??

我用个十几M的文件没这个现像呀,,,     好像是:   先生成a.bat    再把数据 慢慢的写入a.bat  看到窗口里面的  a.bat 文件变化呀 ??



还是有点?    我想也只能是楼上的么解释了@

[ 本帖最后由 x9tiancmd 于 2009-5-3 21:28 编辑 ]
    ╭╩═╮
╭╯G O ╠ 雁过留声
╰⊙═⊙╯

TOP

返回列表