【发布时间】:2021-10-31 05:22:54
【问题描述】:
据我所知,一些特殊字符如果使用“”回显它们是可以显示的。我只是停留在代码上,试图弄清楚我可以在哪里更改以使其正常工作。我看不出问题。来自here 的代码。
我需要的是一个可以为我编写动画然后退出的特殊代码。就这样。我从there 复制了代码,修改后可以使用typewriter.bat "text" "charsnum-1" 调用它,例如typewriter "Hello" 4。虽然我真正不了解 Batch Hybrids,而且即使知道如何解释代码,我也看不出符号卡在哪里。
重现我的问题:typewriter.bat "Hello?" 5
代码:
@if (@CodeSection == @Batch) @then
@echo off
setlocal
color 70
set charnuu=%2
call :split chars %1
:begin
for %%i in (%chars%) do call :type "%%~i"
exit /b
goto begin
:split <var_to_set> <str>
setlocal enabledelayedexpansion
set "line="
set "str=%~2"
for /L %%I in (0,1,%charnuu%) do set line=!line! "!str:~%%I,1!"
endlocal & set "%~1=%line%"
goto :EOF
:type <char>
cscript /nologo /e:JScript "%~f0" "%~1"
goto :EOF
@end
// end batch / begin JScript chimera
function pause() { WSH.Sleep(Math.random() * 50 + 50); }
function odds(num) { return !(Math.round(Math.random() * num) % num) }
pause();
if (odds(300)) WSH.Echo('');
if (!odds(400)) WSH.StdOut.Write(WSH.Arguments(0));
此代码没有显示常见符号,甚至没有显示基本符号,例如 ?。也许我太累了,看不到它。帮帮我。
【问题讨论】:
-
问号不能用于常规的
for循环 - 请参阅 this question 了解更多详细信息。此外,该脚本并没有按照您的想法执行,如果您阅读底部的 rojo 评论,您会发现它是一个旨在通过故意在字符串中添加拼写错误的机会来模拟屏幕保护程序的脚本。这不是你想要的。 -
我建议您尝试解释脚本的用途、您希望作为参数传递给它的内容以及您希望发生的具体情况。我最好的猜测是,您希望最终用户输入两个参数,(一个字符串和一个整数),然后看起来像打字机一样逐个字符地键入该字符串,直到整数个字符被键入。如果这是您想要做的,那么根本不需要混合脚本,可以使用带有标准内置实用程序的批处理文件来完成。
-
@Compo 真的吗?如何?另外,是的,完全正确。
-
@SomethingDark 是的,我知道,我删除了这个错误的机会。我在 Batch 上制作游戏,所以修改和理解游戏会很容易,但我想要一些动画、声音......普通游戏可以做的一切......没有太多的图形方案。
-
@SomethingDark 另外,是的,游戏中的拼写错误也可以。尤其是随机的。
标签: batch-file cmd jscript