运行自制脚本CMD时出现故障

时间:2013-06-25 03:54:39

标签: batch-file cmd

我一直在研究批处理文件,并决定在命令行“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

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

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

这将接受一个参数,延迟量(ms),以及ping一个不存在的计算机。它尝试一次ping它,在它放弃之前等待%1 ms。现在,当我把命令“Hack”,它说“解析缓冲区字符串”,等待三秒钟,然后脚本停止。现在,当我打开echo以查看问题是什么时,它说“解析缓冲区字符串\ nDelay 3000”,等待三秒钟,然后脚本停止。为什么?谢谢。

2 个答案:

答案 0 :(得分:3)

您的程序定义及其调用在哪里?你应该做的事情如下:

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

:delay
ping 1.1.1.1 -n 1 -w %1 > nul

答案 1 :(得分: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