にリストや配列を作成します。私はこのようなバッチファイル内のリストまたは配列を宣言することができます。Windowsのバッチ
set list = "A B C D"
そして、私は間のスペースで、ファイルにこれらを記述する必要があります。
A
B
C
D
にリストや配列を作成します。私はこのようなバッチファイル内のリストまたは配列を宣言することができます。Windowsのバッチ
set list = "A B C D"
そして、私は間のスペースで、ファイルにこれらを記述する必要があります。
A
B
C
D
バッチファイルには「配列」タイプはありませんが、これは時には上下の両方にありますが、回避策があります。バッチ内の配列に似たシステムを自分で作成するための提案を提供するリンクがあります:http://hypftier.de/en/batch-tricks-arrays。ファイル "echo variable >> filepath"へのエコーは、変数の内容をファイルにエコーし、 "echo"の働きをします。 (ピリオドは入力ミスではありません)、改行文字をエコーします。私はこれら2つが一緒にあなたが必要とするものを達成するために働くべきだと思います。
@echo off
setlocal
set "list=a b c d"
(
for %%i in (%list%) do (
echo(%%i
echo(
)
)>file.txt
実際には、変数を一括して宣言することはできません。変数に値を代入するとそれが作成され、空の文字列を代入するとそれが削除されます。割り当てられた値を持たない変数名は、空の文字列の値を持ちます。すべての変数は文字列です - 例外はありません。数学的関数を実行するように見える操作はありますが、文字列から前後に変換することで動作します。
バッチは変数名のスペースに敏感なので、投稿としての割り当てでは、引用符を含む文字列"A B C D"
が変数"list "
に割り当てられます。 set "var=string"
の構文は、値string
をvar
に割り当てますが、set var=string
は同じことを行います。ほぼ。最初のケースでは、終了クォートの後の空白の末尾の空白は、割り当てられた値から除外され、後の空白はINCLUDEDです。スペースは印刷すると少し見やすくなります。
ECHO
文字列をエコーします。クラシス的には、バッチで使用されるデフォルトの区切り文字の1つ(スペース、TAB、COMMA、SEMICOLONのいずれかですが、いずれも同様ですが、テキストエディタによるスペーススケープに変換されることもあります)他の人は長年にわたり独自性を増してきました)O
に続くECHO
の文字は、文書化されたSPACEがすべきことを正確に行うことが分かっています。 DOTは一般的です。オープン括弧(
は、おそらく空行が生成されます
ECHO(%emptyvalue%
一方ECHO
状態(ECHO is on/off
)のレポートを生成するコマンド
ECHO.%emptyvalue%
以来、最も有用です。
ECHO(
の問題は、結果が不均衡に見えるということです。
はい、両方の方法を使用できます。あなただけの要素を分離したいと分離されたラインでは、それらを表示した場合、リストは単純です:
set list=A B C D
スペースで区切られた値のリストを簡単にfor
コマンドで処理することができる。
(for %%a in (%list%) do (
echo %%a
echo/
)) > theFile.txt
あなたはまた、このよう配列を作成することがあります。
setlocal EnableDelayedExpansion
set n=0
for %%a in (A B C D) do (
set vector[!n!]=%%a
set /A n+=1
)
をして配列要素をこのように示しています
をバッチファイル内アレイ管理に関する詳細については(for /L %%i in (0,1,3) do (
echo !vector[%%i]!
echo/
)) > theFile.txt
、以下を参照してください
Arrays, linked lists and other data structures in cmd.exe (batch) script
注意を! set
コマンドに含まれるすべての文字が変数名(等号の左側)または変数値に挿入されていることを知っている必要があります。たとえば、次のコマンド:
set list = "A B C D"
は値"A B C D"
(スペース、引用符、Aなど)を備えたlist
(リスト空間)という変数を作成します。このため、set
コマンドにはスペースを挿入しないことをお勧めします。あなたが引用符で値を囲む必要がある場合は、変数名とその値の両方を囲む必要があります。
set "list=A B C D"
はPS - あなたは空白行を左にするために、ECHO.
を使用すべきではありません!代わりの方法はECHO/
です。このポイントに関する詳細については、以下を参照してください。http://www.dostips.com/forum/viewtopic.php?f=3&t=774
@echo off
set array=
setlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
set nl=^&echo(
set array=auto blue ^!nl!^
bycicle green ^!nl!^
buggy red
echo convert the String in indexed arrays
set /a index=0
for /F "tokens=1,2,3*" %%a in ('echo(!array!') do (
echo(vehicle[!index!]=%%a color[!index!]=%%b
set vehicle[!index!]=%%a
set color[!index!]=%%b
set /a index=!index!+1
)
echo use the arrays
echo(%vehicle[1]% %color[1]%
echo oder
set index=1
echo(!vehicle[%index%]! !color[%index%]!
時々、配列要素がその時点であなたは、このように配列を作成することができ、非常に長くなることがあります。
set list=a
set list=%list%;b
set list=%list%;c
set list=%list%;d
そして、それを示しています
を@echo off
for %%a in (%list%) do (
echo %%a
echo/
)
ええと...そのベクトル[私は]私が探していたものです!ありがとう! – JasonXA
'for/L %% i in(0,1、%n%)'を使用すると、最初の3つではなくすべて取得する必要があります。 –