我正在尝试制作一个自动批处理文件游戏生成器,因为手动动画游戏太慢了。我在编程时碰到了一个问题,试图实现这个目标。我的问题是我无法弄清楚如何使用命令echo连续“堆叠”一个在另一个之上的符号。以下是我想要发生的事情的一个例子:
这是我在被困之前所写的全部内容。 (注意:我试图让我的程序为2行符号制作2个变量)
@echo off
setlocal enabledelayedexpansion
:GroundCreationLoop
set loopcontrol=51
set groundholder=#
set groundholder2=#
echo !groundholder!
echo !groundholder2!
if !loopcontrol!==51
答案 0 :(得分:1)
@echo off
setlocal enabledelayedexpansion
set char=#
for /l %%a in (1,1,51) do (
echo !char!
set char=!char!#
)
pause >nul
输出
#
##
###
####
#####
######
#######
########
#########
##########
###########
############
#############
##############
###############
################
#################
##################
###################
####################
#####################
######################
#######################
########################
#########################
##########################
###########################
############################
#############################
##############################
###############################
################################
#################################
##################################
###################################
####################################
#####################################
######################################
#######################################
########################################
#########################################
##########################################
###########################################
############################################
#############################################
##############################################
###############################################
################################################
#################################################
##################################################
###################################################
答案 1 :(得分:0)
如果我理解正确,这是一个批处理脚本,可以执行此操作:
@echo off
setlocal enabledelayedexpansion
set start=0
set end=51
set char=#
:loop
if %start%==%end% goto stop
set /a start=%start%+1
echo %char%
set char=#%char%
goto loop
:stop
在这种情况下,char会不断累积#,这会给你一个由#组成的直角三角形。
答案 2 :(得分:0)
我认为最后没有换行符的回音命令是echo|set /P=(your thing)
所以如果要连续打印51个“#”符号,则必须使用echo|set /P=!groundholder!
。还有,你错过了goto GroundCreationLoop
吗?
试试这个:
@echo off
setlocal enabledelayedexpansion
set loopcontrol = 0
set groundholder = #
:GroundCreationLoop
set /a loopcontrol = %loopcontrol% + 1
echo|set /P = %groundholder%
if not %loopcontrol% == 51 goto GroundCreationLoop
答案 3 :(得分:0)
我使用VB脚本作为辅助函数做了类似的事情。
使用以下内容创建PromptHelper.vbs
:
If WScript.Arguments.Named.Exists("PROMPT") Then
WScript.StdOut.Write WScript.Arguments.Named.Item("PROMPT")
End If
然后,在批处理脚本中,通过调用ECHO
替换PromptHelper.vbs
。
例如:
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET loopcontrol=0
:GroundCreationLoop
SET /A loopcontrol=!loopcontrol! + 1
CSCRIPT C:\Scripts\PromptHelper.vbs /PROMPT:#
IF NOT !loopcontrol! == 51 GOTO GroundCreationLoop
ECHO.
底部的ECHO.
会将您发送到下一行的开头。