コマンド DIRの動作について
BY qoo288 / DATE 2010-05-21 02:53:30 / ID 2432 / VIEW 1028
| コマンド DIRの動作について バッチファイルのDIRコマンドでよく分からない事が あるので、ご存知の方、ご教授願います。 あるフォルダ(仮にC: estとします。)の中に1行だけ記述された CSVファイルが大量にあります。 これをCOPYコマンドで1ファイルにまとめたいと思います。 しかし、そのフォルダの中にはサブディレクトリがあり、その中にも COPYコマンドの対象としたいCSVファイルがあります。 COPYコマンドはサブディレクトリまで処理対象としてくれない ようですし、サブディレクトリの数は不特定なので、どうしょうかと 困っていたら、あるWebページを見つけました。 ttp://www.fpcu.jp/dosvcmd/bbs/log/copyxcopy/4-1567.html やりたい事はまさにドンピシャで、そのページのコマンドを 自分流に書き換えつつ、完成したのが、以下のコードです。 MKDIR "C: est2" XCOPY "C: est*.csv" "C: est2" /E /Y for /f %%a in ('dir "C: est" /b') do XCOPY "C: est\%%a*.csv" "C: est2" /E /Y COPY "C: est2*.csv" "C: est2log.csv" ※変な所で改行が入って見難くなっていたらゴメンナサイ。 上記、コードで試してみた所、WindowsXPでは問題なく動作しました。 しかし、Windows2000で試してみた所、うまく動きませんでした。 PAUSEコマンドを入れて、どんなコマンドが吐かれているのか見たら サブディレクトリを動的に変えようとしてい%%aの中に「ドライブ」 とか「ボリューム」とか入ってくるのです。最初は意味不明でしたが DIRのbオプションを付けない時に、そういう文字がコマンドプロンプト の画面に表示され、それを取得しているんじゃないかという事に 気づきました。ちなみにWindows2000でもDIR C: est /bとやると フォルダ名、ファイル名しかコマンドプロンプトの画面には表示されません。 気づいたはいいんですが、解決方法が分かりません。 どなたか、コマンドに詳しい方、ご教授ください。 よろしくお願いします。 |
pita-goraさんからのお返事です
ID:2433 POST:2010-05-21 02:53:37
| こんばんは。 ご相談では仮に、C: estとされていますが、実際はディレクトリ名に漢字ひらがななど2バイト文字を使われてませんか? 同じwww.fpcu.jpの中にWindows2000 のfor文に関するバグについて記載されたエントリーがあります。もし該当するようでしたら回避方法も出ていますのご確認下さい。 [WIN2000] for in ( ) do .. の日本語(全角)文字処理にバグあり http://www.fpcu.jp/dosvcmd/bbs/log/cat3/for_in_do/3-0471.html |



