下面的批處理文件中使用了一個有趣的特技我從this post借用該轉換ASCII(1字節)字符轉換成Unicode 2個字節的字符通過的cmd.exe/U開關(插入之間的零字節
@echo off
setlocal
echo Hello, World!> Write.txt
for /F %%a in ('echo prompt $H^| cmd') do set "BS=%%a"
for /F "delims=" %%i in ('cmd /D /U /C type Write.txt ^| find /V ""') do (
set /P "=X%BS%%%i" < NUL
ping localhost -n 2 > NUL
)
EDIT:新版本添加
我修改字符),然後通過查找命令分割到每個線路的零字節以前的代碼以正確的方式顯示幾行代碼;它也使用JScript的睡眠方法,以便在每個字符之間使用可變延遲間隔,這一點導致輸出以更戲劇性的方式出現。
@if (@CodeSection == @Batch) @then
@echo off
(
echo Hello, World!
echo The World is ending!
) > Write.txt
for /F %%a in ('echo prompt $H^| cmd') do set "BS=%%a"
for /F "delims=" %%a in (Write.txt) do (
for /F "delims=" %%i in ('cmd /D /U /C set /P "=%%a"^<NUL ^| find /V ""') do (
set /P "=X%BS%%%i" < NUL
REM ping localhost -n 3 > NUL
cscript //nologo //E:JScript "%~F0"
)
echo/
)
goto :EOF
@end
// JScript section: wait a random number of milliseconds between 0 and 300
WScript.Sleep(300*Math.random());
在完全不相關的說明中,您只能使用整數作爲ping的-n選項,因爲它是運行ping的次數,而不是暫停多少秒。 – SomethingDark
@SomethingDark是的,我想我已經知道了,但它只是從另一篇文章中,似乎延遲了,所以我認爲它是合法的。 – face5054