- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:コマンドプロンプトでファイル名に含まれるスペースを別の文字に置換したい)
コマンドプロンプトでファイル名に含まれるスペースを別の文字に置換する方法
このQ&Aのポイント
- コマンドプロンプトを使用してファイル名に含まれるスペースを別の文字に置換する方法について教えてください。
- BAT実行やバッチにドロップすることでファイル名の置換を行いたいですが、スペースを置換する方法がわかりません。どのようにすればスペースを置換できるでしょうか。
- コマンドプロンプトではスペースを扱うことができないのでしょうか。スペースを置換するための解決策があれば教えてください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
noname#159916
回答No.1
>しかし「TEST」をスペースにしてもファイル名の置換はできません。 >コマンドプロンプトではスペースは扱えないのでしょうか。 普通はその通りです。スペースは区切り文字ですので。 スペースを含むファイル名などの場合、" で囲みます。 質問文のバッチに手を加えるなら、以下のようにしたら成功しました。 -------------------- rem echo %1 for %%A in ("* *.txt") do call :sub "%%A" goto :end :sub rem echo %1 set A=%1 ren %A% "%A: =T%" :end rem pause -------------------- これで、 abc 123.txt を abcT123.txt にリネームできました。 ところで、おかしな点があります。 ・>ファイルをドロップ とありますが、意味を成していません。 変数としてフルパスがバッチに渡されますが、参照する記述がないので。 ・for文でファイル名を探しています。が、対象のフォルダは バッチ起動時のパス内のみであり、ドラッグ&ドロップされたファイルのフルパスとは 無関係です。 ・for 文で :sub を呼びますが、その後次行に移りますがそれが :sub です。 バッチの流れがおかしいです。(上記バッチでは修正しました) バッチが終わるとDOS窓がすぐ閉じてしまうので、 最後にpause でも書いておくといいです。 コマンドがどのように展開されてるか、や、エラーがあればわかります。
お礼
そこに囲むのでしたか!スペースの両端に囲んでいました。 修正もしてくださいましてありがとうございます。