Batch file 如何创建一个循环,在没有/n的情况下回显符号
我正在尝试制作一个自动批处理文件游戏生成器,因为手动制作游戏动画太慢了。我在编程试图实现这一点时遇到了一个问题。我的问题是,我不知道如何使用echo命令连续地“堆叠”符号。以下是我希望发生的一个例子:Batch file 如何创建一个循环,在没有/n的情况下回显符号,batch-file,Batch File,我正在尝试制作一个自动批处理文件游戏生成器,因为手动制作游戏动画太慢了。我在编程试图实现这一点时遇到了一个问题。我的问题是,我不知道如何使用echo命令连续地“堆叠”符号。以下是我希望发生的一个例子: 变量设置为# 程序循环返回,现在设置为## 程序循环直到达到指定的数量(例如符号#的一个变量中有51个) 这是我被困之前写的所有东西。 (注意:我试图让我的程序为2行符号生成2个变量) 如果我理解正确,下面是一个批处理脚本: @echo off setlocal enabledelayedexpa
如果我理解正确,下面是一个批处理脚本:
@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不断累积#,这将生成一个由#组成的直角三角形 我认为在末尾没有换行符的echo命令是
echo | set/p=(你的东西)
因此,如果你想在一行中打印51个“#”符号,你必须使用echo | set/p=!地滚球代码>。另外,您是否缺少转到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
我使用VB脚本作为辅助函数完成了类似的操作
使用以下内容创建PromptHelper.vbs
:
If WScript.Arguments.Named.Exists("PROMPT") Then
WScript.StdOut.Write WScript.Arguments.Named.Item("PROMPT")
End If
然后,在批处理脚本中,用调用PromptHelper.vbs
替换ECHO
例如:
@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 off
setlocal enabledelayedexpansion
set char=#
for /l %%a in (1,1,51) do (
echo !char!
set char=!char!#
)
pause >nul
输出
#
##
###
####
#####
######
#######
########
#########
##########
###########
############
#############
##############
###############
################
#################
##################
###################
####################
#####################
######################
#######################
########################
#########################
##########################
###########################
############################
#############################
##############################
###############################
################################
#################################
##################################
###################################
####################################
#####################################
######################################
#######################################
########################################
#########################################
##########################################
###########################################
############################################
#############################################
##############################################
###############################################
################################################
#################################################
##################################################
###################################################
在SET
语句中应避免使用空格,因为它们计入变量名echo | set/p..
可以工作,但每次都会启动两个新的cmd.exe上下文,因此最好使用这里似乎有些混乱。您希望所有的#
都打印在一行上,对吗?
#
##
###
####
#####
######
#######
########
#########
##########
###########
############
#############
##############
###############
################
#################
##################
###################
####################
#####################
######################
#######################
########################
#########################
##########################
###########################
############################
#############################
##############################
###############################
################################
#################################
##################################
###################################
####################################
#####################################
######################################
#######################################
########################################
#########################################
##########################################
###########################################
############################################
#############################################
##############################################
###############################################
################################################
#################################################
##################################################
###################################################