web-dev-qa-db-ja.com

バッチ変数をテキストファイルに保存する

バッチ変数をテキストファイルに保存しようとしています。私は現在このコードを持っています:

@echo off

Set var=6
@echo %var%>txt.txt

For /f "tokens*" %%i in (txt.txt) do @echo %%i
Pause

6を変数varに保存してから、変数をテキストファイルに書き込むことになっています。これを実行して、ユーザー入力をテキストファイルに保存し、バッチプログラムが終了したときに変数を保持できるようにします。

6
JoerassicPark

リダイレクトには少し問題があります。 「ストリーム」をリダイレクトしています。それらには0〜9の番号が付けられています。 0は「標準入力」(STDIN)、1は「標準出力」(STDOUT)、2は「エラー出力」(STDERR)です。

ストリーム番号なしでリダイレクトシンボル>を使用すると、デフォルトで「1」になります。

したがって、echo text>txt.txtecho text 1>txt.txtの略語です。

今では注意が必要です。echo 6>txt.txtは「6」をファイルにエコーしませんが、「ストリーム6」(空)をファイルにリダイレクトしようとします。 「Stream1」はリダイレクトされないため、標準出力echo is offが画面に表示されます。

解決:

数字または数字で終わる文字列をリダイレクトしようとする場合は、別の構文を使用してください。

>txt.txt echo 6
12
Stephan

Setコマンドを使用して、ファイルの内容を取得します。

set /p var=<filename

Echoコマンドを使用してファイルに入れます。

@echo Contents Of File > "FileName"

ファイルの末尾に別の行を追加するには、次を使用します。

@echo Contents Of File >> "FileName"

また、コマンドを別々の行に配置するか、同じ行のコマンドの間に「&&」を使用します。

1
CosineWaves