Windows “后出现意外错误”;在「;及在「;“做”;
因此,我正在试验批处理脚本,并尝试制作类似于snake的东西。但我遇到了一个问题,我不知道是什么原因造成的。就在我开始的第一个循环中,我在3之后遇到了关于“)”的意外错误。我尝试制作另一个变量,它有“1 2 3”,并使用它来代替,但仍然得到几乎相同的结果。刚才它表明,这样做是出乎意料的 当然,我可以使用if语句,这显然也很有效,但我正在试验goto,看看脚本的速度是否会提高。因为使用if,输出3行代码至少需要半秒或更短的时间Windows “后出现意外错误”;在「;及在「;“做”;,windows,batch-file,if-statement,cmd,Windows,Batch File,If Statement,Cmd,因此,我正在试验批处理脚本,并尝试制作类似于snake的东西。但我遇到了一个问题,我不知道是什么原因造成的。就在我开始的第一个循环中,我在3之后遇到了关于“)”的意外错误。我尝试制作另一个变量,它有“1 2 3”,并使用它来代替,但仍然得到几乎相同的结果。刚才它表明,这样做是出乎意料的 当然,我可以使用if语句,这显然也很有效,但我正在试验goto,看看脚本的速度是否会提高。因为使用if,输出3行代码至少需要半秒或更短的时间 @echo off chcp 65001 mode con: cols
@echo off
chcp 65001
mode con: cols=50 lines=25
setlocal EnableDelayedExpansion
echo. > test.txt
set array[1]=2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2
set array[2]=2 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 2
set array[3]=2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2
for %%b in (1, 2, 3) do (
for %%i in (!array[%%b]!) do (
echo Loop Begins
set LNr=%%i
echo Loop%LNr%
goto Loop%LNr%
:Loop0
echo 0
echo|set /p ="░" >> test.txt
goto LoopE
:Loop1
echo 1
echo|set /p ="█" >> test.txt
goto LoopE
:Loop2
echo 2
echo|set /p = "#" >> test.txt
goto LoopE
:LoopE
)
echo. >> test.txt
)
echo. >> test.txt
此外,任何关于我可以在ANSI编码中使用哪些字符来避免使用UTF-8和更改CMD字体的想法?1。
对于批处理循环中的循环将如下所示:对于/l%%b in(1,2,3)do(…)
2.在变量周围添加引号是一种很好的做法,尤其是包含空格的变量。例如:设置“数组[1]=200 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2”
3。您可以通过注册表项更改字体
注册表项:HKLM\Software\Microsoft\WindowsNT\CurrentVersion\Console\TrueTypeFont
更改值,例如:Lucida Console
的值为0
reg/?
了解以编程方式更改的更多详细信息。
这是可行的,但我不确定它是否会产生所需的输出:
@echo off
chcp 65001
mode con: cols=50 lines=25
setlocal EnableDelayedExpansion
echo. > test.txt
set array[1]=2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2
set array[2]=2 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 2
set array[3]=2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2
for %%b in (1, 2, 3) do (
for %%i in (!array[%%b]!) do (
call :funct %%i
)
echo. >> test.txt
)
echo. >> test.txt
exit /b %errorlevel%
:funct
echo Loop Begins
set LNr=%1
echo Loop%LNr%
goto Loop%LNr%
:Loop0
echo 0
echo|set /p ="░" >> test.txt
goto LoopE
:Loop1
echo 1
echo|set /p ="█" >> test.txt
goto LoopE
:Loop2
echo 2
echo|set /p = "#" >> test.txt
goto LoopE
:LoopE
goto :eof
并生成类似于
#░░░░░░░░░░░░░░░░░░░░░░░░░░#
#░░░░░░░░░░░░█░░░░░░░░░░░░░#
#░░░░░░░░░░░░░░░░░░░░░░░░░░#
GOTO中断for循环,因此您需要子例程。同时检查文档。有很多方法可以生成扩展的ASCII sharacters-,,,。您需要去中断FOR循环上下文。考虑一个子程序来生成所有扩展的ASCII字符来检查这个-并且只需设置一个正确的CHCP代码。谢谢,是的,我认为它必须和GOTO做一些事情。