これまでに私はバッチファイルに入っていましたが、私はそれに戻ってきますが、私の人生にとっては私の好みの方法を見つけることができません。ファイルからテキストの行を取得バッチファイルの複数の行を読む方法 "("
のそれは、このようなことを行ってきました:
(
set /p %var1%=
set /p %var2%=
)>textfile.txt
ありがとうございましたあなたは、ファイルから読み取るしようとしている:-)
これまでに私はバッチファイルに入っていましたが、私はそれに戻ってきますが、私の人生にとっては私の好みの方法を見つけることができません。ファイルからテキストの行を取得バッチファイルの複数の行を読む方法 "("
のそれは、このようなことを行ってきました:
(
set /p %var1%=
set /p %var2%=
)>textfile.txt
ありがとうございましたあなたは、ファイルから読み取るしようとしている:-)
おっとを。!それに書き込まないでください。したがって<
が必要で、>
ではありません。
また、変数を定義するときではなく、変数を展開するときにパーセントを使用します。
最後に、空の行を読み取ると既存の変数値が保持されるため、読み込む前に明示的に事前値を定義解除する必要があります。
(
set "var1="
set /p "var1="
set "var2="
set /p "var2="
) <textfile.txt
ロホは彼のコメントで述べたように、あなたは行の任意の数を読んでいる場合は、配列の概念を使用したほうが良いかもしれません。ただし、最初に読み取る行の合計数を決定する必要があります。 SETを使用して
@echo off
setlocal enableDelayedExpansion
:: Determine number of lines
for /f %%N in ('find /c /v "" <textfile.txt') do set "cnt=%%N"
:: Read the file into an array
<textfile.txt (
for /l %%N in (1 1 %cnt%) do (
set "str.%%N="
set /p "str.%%N="
)
)
:: Display the array values
for /l %%N in (1 1 %cnt%) do echo(!str.%%N!)
/Pは、変数にファイルを読み込むための最速の方法です、と遅延拡張が有効になっている場合には、空行に関するFOR/Fの問題を回避し、!
が破損しています。しかし、SET/Pは、独自の制限があります。ソース・ファイル内の
ありがとう!これは私が欲しかったものです。 – george
OPは「データファイルをどのように読み取るのですか」と質問していないので、この質問は重複としてマークされているはずはないと思いますか?彼は「どのようにデータファイル*をリダイレクト*で読むのですか?これは大きな違いです。 – rojo
OPでは、 'set/P'をループしてリダイレクトで行を読むことができます。例: '
rojo
'set/p var ='(パーセント記号なし)で、テキストファイルから読み込みたいので、 '<', not '> ' – Stephan