2

ゲームを手動でアニメーション化するのは遅すぎるため、自動バッチ ファイル ゲーム ジェネレーターを作成しようとしています。これを達成しようとプログラミングしているときに問題が発生しました。私の問題は、コマンド echo を使用してシンボルを連続的に「スタック」する方法を理解できなかったことです。これが私がしたいことの例です:

  1. 変数は # に設定されています
  2. プログラムはループバックし、現在は ## に設定されています
  3. 指定された量に達するまでプログラムをループします (シンボル # の 1 つの変数で 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

私があなたを正しく理解していれば、これを行うバッチスクリプトは次のとおりです。

@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 に答える
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.下の は、次の行の先頭に移動します。

于 2012-12-20T13:10:55.963 に答える