- ベストアンサー
Windows環境で空白を含むファイルを検索し移動する方法
- Windows環境でforコマンドを使用して空白を含むファイルを検索し、移動させる方法について教えてください。
- forコマンドで検索されたファイルに空白が含まれる場合、移動することができない問題があります。この問題を解決するためには、検索されたファイル名を引用符で囲む必要があります。具体的な解決方法を教えてください。
- 例えば、Windows環境で以下のような状況で実行した場合、空白を含むファイルを正しく移動する方法を教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
for /f "usebackq tokens=*" %%A in (`dir /b /s *.mp3`) do move "%%A" d:\test やり方としては、いろいろあるが、上記で目的は達成できます。 もっといろんな物をつくれば、なれるようになりますよ。 for /? で上記””内のオプションを確認してください。
その他の回答 (2)
- 0909union
- ベストアンサー率39% (325/818)
>ファイル名を文字列として出力するという意味でしょうか? この投稿で問題にしているのは「ファイル名にスペースがある時の処理」ですね。 その問題に的を絞って、話をしています。DO以降はDOSコマンドを羅列すれば、いいだけなので、そちらの問題は、自由に作成者が変更すればいいことです。 「デバック」と言う言葉をご存知ですか? 希望とおり動作しない場合、擬似的な値を挿入したりして、問題箇所の特定と、コードのミニマムの動作を確認します。 何か新しい事をするまえに、どのような値が、変数にセットされるのか? そして、どのように変数の値が移行されるのか? これを見るのがデバックの基本です。 とすれば、最初から何の値がセットされるのか見てから、Moveコマンドをセットすれば、試行錯誤の時間が短くなりますね。 なので、@echo name = "%a" とすれば、すべての値が""内におさまれば、問題をクリアーするわけですよね? 問題をクリアーしてから次のステップにいきましょう。 Moveを実行してしまうと、作り出した環境を再度つくらないとだめですよね。 今回の場合単純ですが、やりたい事が増えると、問題が複雑化します。それらは、ダミーでテストすれば、1日で解決するのが、1週間とかになります。
- 0909union
- ベストアンサー率39% (325/818)
とりあえず他のやり方。 for /r . %a in (*.mp3) do @echo name = "%a"
補足
回答ありがとうございます。 とりあえずコピーして実行してみたのですが移動とかはされませんでした。 これは、今のディレクトリの*.mp3のファイル名を文字列として出力するという意味でしょうか? ほかのやり方ということ参考になるのでもうちょっと調べて見ます。
お礼
すばらしい!無事できました。 ありがとうございます! usebackqはこのように使えるんですね。勉強になります。 早い対応大変助かりました。