ぼろぼろです。
まず、tokens
は1行のうち(区切り文字で区切られた)何番目を取り出すかを指定するので、空にすると何も取り出しません。おそらくtokens=*
(全項目取りだし)と間違えたか。
何も取り出されないので、do
の後は一度も実行されず、test.txt
も出来ません。
FILEのファイルが画面に表示されます。
というのは、勘違いでしょう。
あと、line = %%a
と、=
の前後に空白が入っているのが間違いです。
これは、line
という名前の変数(5文字目空白を含んだ変数名)に、「空白1つの後に取り出した項目を続けたもの」をセットします。
また、%line%
とすら書いていないので門前払いですが、for
の中で変数の変更される値を参照するには、遅延変数展開が必要です。
DOS
1setlocal enabledelayedexpansion
2if exist test.txt del test.txt
3set FILE="ファイルパス"
4for /f "usebackq tokens=* eol=" %%a in (%FILE%) do (set line=%%a
5echo !line!>>test.txt)
そもそも変数にセットする必要が無くて、
DOS
1set FILE="ファイルパス"
2(for /f "usebackq tokens=* eol=" %%a in (%FILE%) do echo %%a)>text.txt
と直接FOR変数を書けば、遅延変数展開も不要です。
FOR全体をリダイレクトすれば、ファイルをあらかじめ消しておくことも不要です。
また、そもそもですが、copy %FILE% text.txt
でいいのでは?
for /f
で読むと、空行や、(デフォルトでは);
で始まる行が、読み飛ばされます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/07/22 12:08 編集