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

Batch file 如何创建一个循环,在没有/n的情况下回显符号,batch-file,Batch File,我正在尝试制作一个自动批处理文件游戏生成器,因为手动制作游戏动画太慢了。我在编程试图实现这一点时遇到了一个问题。我的问题是,我不知道如何使用echo命令连续地“堆叠”符号。以下是我希望发生的一个例子: 变量设置为# 程序循环返回,现在设置为## 程序循环直到达到指定的数量(例如符号#的一个变量中有51个) 这是我被困之前写的所有东西。 (注意:我试图让我的程序为2行符号生成2个变量) 如果我理解正确,下面是一个批处理脚本: @echo off setlocal enabledelayedexpa

我正在尝试制作一个自动批处理文件游戏生成器,因为手动制作游戏动画太慢了。我在编程试图实现这一点时遇到了一个问题。我的问题是,我不知道如何使用echo命令连续地“堆叠”符号。以下是我希望发生的一个例子:

  • 变量设置为#
  • 程序循环返回,现在设置为##
  • 程序循环直到达到指定的数量(例如符号#的一个变量中有51个)
  • 这是我被困之前写的所有东西。 (注意:我试图让我的程序为2行符号生成2个变量)


    如果我理解正确,下面是一个批处理脚本:

    @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上下文,因此最好使用
    这里似乎有些混乱。您希望所有的
    #
    都打印在一行上,对吗?
    # 
    ## 
    ### 
    #### 
    ##### 
    ###### 
    ####### 
    ######## 
    ######### 
    ########## 
    ########### 
    ############ 
    ############# 
    ############## 
    ############### 
    ################ 
    ################# 
    ################## 
    ################### 
    #################### 
    ##################### 
    ###################### 
    ####################### 
    ######################## 
    ######################### 
    ########################## 
    ########################### 
    ############################ 
    ############################# 
    ############################## 
    ############################### 
    ################################ 
    ################################# 
    ################################## 
    ################################### 
    #################################### 
    ##################################### 
    ###################################### 
    ####################################### 
    ######################################## 
    ######################################### 
    ########################################## 
    ########################################### 
    ############################################ 
    ############################################# 
    ############################################## 
    ############################################### 
    ################################################ 
    ################################################# 
    ################################################## 
    ###################################################