2

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

  1. 变量设置为#
  2. 程序循环回来,现在设置为##
  3. 程序循环直到达到指定数量(如符号#的一个变量中的51)

这是我在被卡住之前写的所有内容。(注意:我试图让我的程序为 2 行符号生成 2 个变量)

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

4 回答 4

1
@echo off
setlocal enabledelayedexpansion
set char=#
for /l %%a in (1,1,51) do (
echo !char!
set char=!char!#
)
pause >nul

输出

# 
## 
### 
#### 
##### 
###### 
####### 
######## 
######### 
########## 
########### 
############ 
############# 
############## 
############### 
################ 
################# 
################## 
################### 
#################### 
##################### 
###################### 
####################### 
######################## 
######################### 
########################## 
########################### 
############################ 
############################# 
############################## 
############################### 
################################ 
################################# 
################################## 
################################### 
#################################### 
##################################### 
###################################### 
####################################### 
######################################## 
######################################### 
########################################## 
########################################### 
############################################ 
############################################# 
############################################## 
############################################### 
################################################ 
################################################# 
################################################## 
###################################################
于 2012-12-20T13:36:58.493 回答
0

我使用 VB 脚本作为辅助函数完成了类似的操作。

PromptHelper.vbs使用以下内容创建:

If WScript.Arguments.Named.Exists("PROMPT") Then
  WScript.StdOut.Write WScript.Arguments.Named.Item("PROMPT")
End If

然后,在您的批处理脚本中,将 替换为ECHOPromptHelper.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.底部的 会将您带到下一行的开头。

于 2012-12-20T13:10:55.963 回答
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 会不断累积 #,这会为您提供一个由 # 组成的直角三角形。

于 2012-12-20T02:46:54.717 回答
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
于 2012-12-20T02:47:37.827 回答