2012-12-20 54 views
2

我想製作一個自動批處理文件遊戲生成器,因爲手動設置動畫太慢了。我在編程時遇到了一個問題,試圖達到此目的。我的問題是,我無法弄清楚如何使用命令echo將符號連續「堆疊」在另一個之上。這是我所希望發生的例子:我如何製作一個回聲符號而不用/ n

  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 
+0

似乎在這裏有些混亂。你想讓所有'#'在一行上打印,對嗎? – aphoria

回答

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會不斷積累#,這會給你一個由#組成的直角三角形。

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 
+0

您應該避免使用'SET'語句中的空格,因爲它們會計入變量名稱。 'echo | set/p ..'可以工作,但每次都會啓動兩個新的cmd.exe上下文,因此最好使用' jeb

0

我使用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.在底部會送你到下一行的開始。

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

輸出

# 
## 
### 
#### 
##### 
###### 
####### 
######## 
######### 
########## 
########### 
############ 
############# 
############## 
############### 
################ 
################# 
################## 
################### 
#################### 
##################### 
###################### 
####################### 
######################## 
######################### 
########################## 
########################### 
############################ 
############################# 
############################## 
############################### 
################################ 
################################# 
################################## 
################################### 
#################################### 
##################################### 
###################################### 
####################################### 
######################################## 
######################################### 
########################################## 
########################################### 
############################################ 
############################################# 
############################################## 
############################################### 
################################################ 
################################################# 
################################################## 
################################################### 
相關問題