こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Windows環境にてforコマンドで空白を含むファイルを検索して、検

Windows環境にてforコマンドで空白を含むファイルを検索して、検索結果を移動させるバッチを作成したいのですが検索結果に空白を含む場合、移動することができないので困っています。

例えば以下のような状況で実行した場合はどうすればうまく移動することができるのでしょうか?

コマンド--------------------
for /f %%A in ('dir /b /s *.mp3') do move "%%A" d:/test

カレントディレクトリ------------
AA.txt
BB.txt
C C.txt

実行結果
AA.txt-->移動
BB.txt-->移動
move "C" d:/test-->指定されたファイルが見つかりません。

おそらくdirコマンドでの検索されたファイルに空白が入っているときは%%Aに空白までのファイル名が挿入されていることが原因だと思います。
コマンドで検索されたファイルを""で括るようなことができれば解決できると思っていますが、そのようなことができるのか知っている方がおりましたら教えていただけないでしょうか?
よろしくお願いいたします。

以上

投稿日時 - 2010-09-04 23:44:49

QNo.6159175

困ってます

質問者が選んだベストアンサー

for /f "usebackq tokens=*" %%A in (`dir /b /s *.mp3`) do move "%%A" d:\test

やり方としては、いろいろあるが、上記で目的は達成できます。

もっといろんな物をつくれば、なれるようになりますよ。

for /?

で上記””内のオプションを確認してください。

投稿日時 - 2010-09-05 02:22:29

お礼

すばらしい!無事できました。

ありがとうございます!

usebackqはこのように使えるんですね。勉強になります。
早い対応大変助かりました。

投稿日時 - 2010-09-05 11:04:14

このQ&Aは役に立ちましたか?

7人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

>ファイル名を文字列として出力するという意味でしょうか?

この投稿で問題にしているのは「ファイル名にスペースがある時の処理」ですね。

その問題に的を絞って、話をしています。DO以降はDOSコマンドを羅列すれば、いいだけなので、そちらの問題は、自由に作成者が変更すればいいことです。

「デバック」と言う言葉をご存知ですか?

希望とおり動作しない場合、擬似的な値を挿入したりして、問題箇所の特定と、コードのミニマムの動作を確認します。

何か新しい事をするまえに、どのような値が、変数にセットされるのか?

そして、どのように変数の値が移行されるのか?

これを見るのがデバックの基本です。

とすれば、最初から何の値がセットされるのか見てから、Moveコマンドをセットすれば、試行錯誤の時間が短くなりますね。

なので、@echo name = "%a"

とすれば、すべての値が""内におさまれば、問題をクリアーするわけですよね?

問題をクリアーしてから次のステップにいきましょう。

Moveを実行してしまうと、作り出した環境を再度つくらないとだめですよね。

今回の場合単純ですが、やりたい事が増えると、問題が複雑化します。それらは、ダミーでテストすれば、1日で解決するのが、1週間とかになります。

投稿日時 - 2010-09-05 11:29:55

ANo.2

とりあえず他のやり方。

for /r . %a in (*.mp3) do @echo name = "%a"

投稿日時 - 2010-09-05 02:29:50

補足

回答ありがとうございます。

とりあえずコピーして実行してみたのですが移動とかはされませんでした。
これは、今のディレクトリの*.mp3のファイル名を文字列として出力するという意味でしょうか?

ほかのやり方ということ参考になるのでもうちょっと調べて見ます。

投稿日時 - 2010-09-05 11:00:44

あなたにオススメの質問