私のコードは、これまでのようになります。バッチファイルで変数を持つ変数を作成できますか?
:start
set a=0
echo Enter Number:
set /p b%a%=
set /a a=%a%+1
if %a% lss 5 goto start
set x=1
:show
echo Number 1: %b%a%%
if %x% lss 5 goto show
これは可能ですか?それは配列のようですが、技術的にはそうではありません。
私のコードは、これまでのようになります。バッチファイルで変数を持つ変数を作成できますか?
:start
set a=0
echo Enter Number:
set /p b%a%=
set /a a=%a%+1
if %a% lss 5 goto start
set x=1
:show
echo Number 1: %b%a%%
if %x% lss 5 goto show
これは可能ですか?それは配列のようですが、技術的にはそうではありません。
はい、これは、以下のバッチコードが示すとおり可能です。
@echo off
setlocal EnableDelayedExpansion
set "a=1"
:LoopEnterNumbers
set /P "b%a%=Enter Number: "
set /A a+=1
if %a% lss 6 goto LoopEnterNumbers
set "a=1"
:LoopDisplayNumbers
echo Number %a%: !b%a%!
set /A a+=1
if %a% lss 6 goto LoopDisplayNumbers
endlocal
start
は、Windowsの標準コマンドです。ラベルとして使用することは可能ですが、使用することはお勧めしません。
プロンプトテキストは、コマンドset /P
で指定できます。
詳細については、How to set environment variables with spaces?を参照してください。
set /A
以降のすべてが算術式として解釈され、+=
もサポートされます。
環境変数の名前を別の環境変数で参照するには、遅延環境変数の拡張を使用する必要があります。
BTW:コマンドset b
は、すべてname=value
という文字で始まるすべての環境変数をb
で出力します。よりユニークな名前で、これは上記の使用されたループよりも変数を出力する方が良い方法です。使用するコマンドを理解し、どのように彼らは、コマンドプロンプトウィンドウを開き、そこに次のコマンドを実行し、完全にページが非常に慎重に、各コマンドのために表示されているすべてのヘルプを読んで、仕事のため
@echo off
setlocal EnableDelayedExpansion
set a=1
:LoopEnterNumbers
set /P "MyNumber#%a%=Enter Number: "
set /A a+=1
if %a% lss 6 goto LoopEnterNumbers
for /F "tokens=2,3 delims=#=" %%I in ('set MyNumber#') do echo Number %%I%: %%J
endlocal
。
echo /?
endlocal /?
for /?
goto /?
if /?
set /?
setlocal /?
ありがとうございました!たくさん助けてくれた! –
多分醜いハックがあるかもしれません。実行時に実際のset/p文を含むechoを使ってバッチファイルを生成することができます。 –
あなたが達成しようとしていることがわからない場合は、この記事に興味があると思います。[バッチ:TXT線を配列に解析](http://stackoverflow.com/a/30404094)... – aschipfl