Batch file 多行批处理文件打印中的奇怪错误
我一直在为自己做一个项目,它批量生成一个网格,可以访问和修改特定的点,以便通过批量游戏等获得更好的图形Batch file 多行批处理文件打印中的奇怪错误,batch-file,Batch File,我一直在为自己做一个项目,它批量生成一个网格,可以访问和修改特定的点,以便通过批量游戏等获得更好的图形 @echo关闭 setlocal ENABLEDELAYEDEXPANSION !x! ::::::::::: ::别名: ::::::::::: :@别名 设置x=退出/b 后藤:@main !x! ::::::::::: ::MAIN:: ::::::::::: :@main 电话:$Canvas\u Canvas 16。 设置px=%~1 设置py=%~2 设置_canvas_point
@echo关闭
setlocal ENABLEDELAYEDEXPANSION
!x!
:::::::::::
::别名:
:::::::::::
:@别名
设置x=退出/b
后藤:@main
!x!
:::::::::::
::MAIN::
:::::::::::
:@main
电话:$Canvas\u Canvas 16。
设置px=%~1
设置py=%~2
设置_canvas_point[!px!][!py!]=#
!_帆布画!
!x!
:::::::::::
::对象::
:::::::::::
:@objects
!x!
:$Canvas
设置此=%~1
设置/a!这个_宽度=%~2
设置/a!这个_高度=%~3
设置这个_默认字符=%~4
设置这个#draw=调用:#$canvas_proto_draw!这
对于/L%%i in(1,1,!%this%\u高度!),请执行以下操作(
对于/L%%j英寸(1,1,!%this%\u宽度!),请执行以下操作(
设置!此!\u点[%%j][%%i]=!%this%\u默认字符!
设置!此!_行[%%i]=!%this%_行[%%i]!!%this%_点[%%j][%%i]!
)
)
!x!
:#$Canvas_proto_draw
设置此=%~1
对于/L%%i in(1,1,!%this%\u高度!),请执行以下操作(
对于/L%%j英寸(1,1,!%this%\u宽度!),请执行以下操作(
设置!此!_行[%%i]=!%this%_行[%%i]!!%this%_点[%%j][%%i]!
)
)
对于/L%%i in(1,1,!%this%\u高度!),请执行以下操作(
回显!%this%\u行[%%i]!
)
!x!
我的问题出现在最终输出上:给它1,1
将导致一个点显示在顶行的中间。我不知道为什么会发生这种情况,需要帮助。我已经在echo打开的情况下仔细检查了所有输出,值\u canvas\u point[1][1]
确实获得了更新时的值
以下是输出:
C:\Home>canvas 1
................#...............
................................
................................
................................
................................
................................
................................
................................
................................
................................
................................
................................
................................
................................
................................
................................
C:\Home>
是一个pastebin链接,其输出上有@echo
快速事件:
是的,这是在批处理文件中进行面向对象编程的微弱尝试
是的,我知道其他语言更适合做这类事情,我只想用批处理文件
是的,我有一些奇怪的风格选择,比如名字和标签等等。这是为了让我能更好地阅读它,因为标签用于转到位置和函数标签。也许下面的示例更接近您要实现的目标(面向对象的.BAT文件方法): In:#$Canvas_proto_draw
:#$Canvas_proto_draw
set this=%~1
for /L %%i in (1, 1, !%this%_height!) do (
SET "!this!_row[%%i]="
for /L %%j in (1, 1, !%this%_width!) do (
...
您可能会发现显示的数据是32列x 16行。这是由于在添加值之前没有清除每一行造成的。谢谢您的帮助。我理解这种方法没有多大意义,但感谢您的帮助:)
:#$Canvas_proto_draw
set this=%~1
for /L %%i in (1, 1, !%this%_height!) do (
SET "!this!_row[%%i]="
for /L %%j in (1, 1, !%this%_width!) do (
...