如何在没有/ n的情况下创建一个回显符号的循环

时间:2012-12-20 02:38:49

标签: batch-file

我正在尝试制作一个自动批处理文件游戏生成器,因为手动动画游戏太慢了。我在编程时碰到了一个问题,试图实现这个目标。我的问题是我无法弄清楚如何使用命令echo连续“堆叠”一个在另一个之上的符号。以下是我想要发生的事情的一个例子:

  1. 变量设置为#
  2. 程序循环回来,现在设置为##
  3. 程序循环直到达到指定的数量(例如符号#的一个变量中的51)
  4. 这是我在被困之前所写的全部内容。 (注意:我试图让我的程序为2行符号制作2个变量)

    @echo off
    setlocal enabledelayedexpansion
    :GroundCreationLoop
    set loopcontrol=51
    set groundholder=# 
    set groundholder2=# 
    echo !groundholder! 
    echo !groundholder2!
    if !loopcontrol!==51   
    

4 个答案:

答案 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.会将您发送到下一行的开头。