- 締切済み
MS-DOSバッチファイルで
度々ご教授お願い致します。 以下のようなMS-DOSバッチファイルで、xcopy コピー元 コピー先のようにしたいのですがこれではうまくいきません。 どのようにしたら良いでしょうか。宜しくお願い致します。 FOR /F "eol=; tokens=1,2 delims=, " %%i in (c:\a.txt) do (@echo %%i %%j) xcopy %%i %%j /s /o /y >> (@echo %%i %%j)
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- hfft
- ベストアンサー率66% (2/3)
#2のHFFTです。 xcopyを勝手にcopyに変えちゃいました。適宜読み替えてください。
- hfft
- ベストアンサー率66% (2/3)
KHHHHHHHHさんのご希望する回答ではないかもしれませんが。 おそらく%%iのスコピックの問題かと思います。 バッチでは、For文の外にでると%%iとかは参照できません。 ほかの高級言語だと見えるとは思いますが、そもそも2行以上コピー条件があったとき、 xcopy %%i %%j /s /o /y >> (@echo %%i %%j) の部分は最後に取得した値しか取らないでしょうね。 ちなみに、 xcopy %%i %%j /s /o /y >> (@echo %%i %%j) の”>>”意図が見えませんが。進捗状況を表示したいとの意図なのかなぁと思って以下のように書いてみました。 ------ここから------ @echo off for /f "eol=; tokens=1,2 delims=(,;) " %%A in (c:\a.txt) do (copy %%A %%B |echo %%Aを%%Bにコピーしました。) ------ここまで------ 勝手にdelims=(,;)と直したのは、a.txtが 1.txt,2.txt; 3.txt,5.txt のような場合1行目で%%Bに"2.txt;"が代入されてしまうためです。 また、%%A、%%Bにしたのは、”大文字を使ったほうがいいよ”って、え○い人が言ってたためで、KHHHHHHHHさんの最初のとおりi,jでも大丈夫です。
- Tacosan
- ベストアンサー率23% (3656/15482)
「うまくいかない」というのは「どういう入力に対して」「何を期待していて」「実際にはどのように動作しているので」うまくいかないと判断しているのでしょうか? 特に, 「何を期待していて」について書かないと大多数の人には正確に認識できないことをご理解ください.