【技术分享】趣谈批处理文件%0|%0

前言

大家好,我是路明。这期文章我想和大家浅谈一下 在Windows下,批处理文件中%0|%0命令的意义。

%0|%0运行的效果

提起%0|%0运行后的效果,相比懂点电脑的小伙伴都会或多或少地在网络上发现过诸如“只有5个字符就能卡爆你的电脑!快拿来整蛊你的朋友!”之类的文章,那么它的效果可想而知了:

虚拟场景
你双击点开了内容为%0|%0的批处理文件

此时此刻,电脑弹出了一个窗口,不断地显示该批处理文件所处的目录

你打开了任务管理器,发现电脑的CPU和内存占用率直线飙升

你发现你的鼠标移动开始卡顿,那个批处理文件的运行窗口开始无响应

你发现批处理文件的窗口上显示了一些你看不懂的文字(类似于^C之类的)

你发现你的电脑完全无法操作了

你发现电脑卡在了某一界面,再也无法移动

那么要解决这种办法,也很简单。

解决方法
1.趁着电脑还没有彻底卡死,按Win+R,运行“taskkill /f /im cmd.exe”

2.趁着电脑还没有卡死,注销电脑

如果上述方法都没有解决的话,那就只能关机喽§(* ̄▽ ̄*)§

原理

好了,不小心扯了那么多,接下来和大家分享一下这个批处理文件的原理。

首先,%0   在批处理文件中代表批处理文件本身,即如果运行%0,命令行会再次运行这个批处理文件。

其次,|       在批处理文件中代表如果否,即如果执行该符号前的命令失败后,会执行该符号后的命令。

那么组合起来,%0|%0就代表以下意思

执行这个批处理文件本身,如果执行失败,那么依然执行这个批处理文件本身。

可以把整个过程理解为图形化编程中的永远循环,即永远执行这个批处理文件本身,永不停止。

同理程序分享

在Windows命令行(cmd)中,有一些代码可以同样实现类似于%0|%0的效果。

程序1

start cmd
%0

分析:根据代码可直观地看到,第一行代码中“start”是“启动”的意思,“cmd”即Windows中的命令行主程序(cmd.exe)。“%0”则为前文中提到的,重复再执行一遍该批处理文件。

当批处理文件再次执行自身的时候,依然会再次运行自身,达成无限循环的效果。

不过,该方法的效果直观可见,运行后,屏幕上会快速出现一堆命令行窗口,同样会造成卡慢,死机的效果,当然也是可以通过前文提到的解决方法来解决的。

程序2

:start
start cmd
goto start

分析:

  1. :start - 这是一个标签。在批处理脚本中,标签通常用于标识某一部分的代码,以便于使用goto命令跳转到该标签。
  2. start cmd - 这行命令尝试启动一个新的命令提示符窗口。但是,实际上这里有一个小错误。start是一个命令,后面应该直接跟参数(这里是cmd),而不是应该有空格。正确的写法应该是start cmd
  3. goto start - 这是一个跳转命令。它会将脚本的控制权跳转到名为“start”的标签处,从而形成一个无限循环。这意味着一旦脚本开始执行,它会不断地启动新的命令提示符窗口,直到用户手动停止脚本的执行。

结束语

本期文章的分享就到这里了,我是路明,我们下期文章再见!

THE END