1

我一直在使用批处理文件,并决定在命令行“Hack”中创建一个可用的命令来获得一点乐趣,这看起来会让它看起来像是发生了一些不好的事情,但实际上什么都没有。这是它的来源:

@echo off

ECHO Parsing Buffer Strings...
Delay 3000
ECHO Reading Args from FTP Protocol...
Delay 3000
ECHO Interpreting BAUD rate...
Delay 3000
ECHO Reading IBM Standards...
Delay 3000
ECHO Removing Multiplexer matrices...
Delay 3000
ECHO Compiling zip files...
Delay 3000
ECHO Complete. System OS bypassed.
PAUSE

现在,您可能已经注意到,没有内置的“延迟”命令,所以我自己制作了一个,将新制作的批处理文件与 Hack.bat 一起放在 System32 中:

@echo off
ping 1.1.1.1 -n 1 -w %1 > nul

这需要一个参数,延迟量 (ms),并 ping 一台不存在的计算机。它尝试 ping 一次,等待 %1 毫秒后放弃。现在,当我输入命令“Hack”时,它显示“解析缓冲区字符串”,等待三秒钟,然后脚本停止。现在,当我打开 echo 以查看问题所在时,它说“正在解析缓冲区字符串\n延迟 3000”,等待了三秒钟,然后脚本停止了。为什么?谢谢你。

4

2 回答 2

3

您的过程定义在哪里,它的调用在哪里?你应该做一些类似的事情:

echo parsing ...
call :delay 3000
echo reading ...
call :delay 3000
exit

:delay
ping 1.1.1.1 -n 1 -w %1 > nul
于 2013-06-25T04:03:51.363 回答
2

ping addr -n 1 -w 3000只会在addr无法到达的情况下工作。当由于某种原因地址变得可访问时,该命令将立即返回。它还会污染网络(只是一点点,但仍然如此)。

如果您不需要毫秒延迟,更好的方法是这样的:

@echo off

echo %TIME%
call :delay 5
echo %TIME%
goto :eof

:delay
set /a count=%1+1
ping -n %count% 127.0.0.1 >nul

输出:

C:\>delay.cmd
12:47:44,33
12:47:49,38

ping两个回显请求之间有大约 1 秒的延迟,因此您可以通过向localhost发送n+1 个回显请求来休眠n秒。

于 2013-06-25T10:52:34.947 回答