- ベストアンサー
MSDOSからワイルドカード指定で複数ファイル名の一部を一括変更
MSDOSからワイルドカード指定で複数ファイル名の一部を一括変更する方法はありますでしょうか? 例えば、 「a.dat.gz」「b.dat.gz」「c.dat.gz」 上記のような複数ファイルを以下のように変更したいと思っています。 「a.gz」「b.gz」「c.gz」 ちなみに次のコマンドを試してみたのですがダメでした。 ren *.dat.gz *.gz 実際はバッチファイルから処理をさせたいと思っています。 よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
★本当に『a.dat.gz』、『b.dat.gz』、『c.dat.gz』の形式の名前だけですか。 ・上記の場合ならば、 『for %%i in ( a b c ) do ren %%i.dat.gz %%i.gz』で出来ますけど。 ※a、b、c 以外にあればカッコ内に増やして下さい。 ※また、バッチファイル内ですので %% と2つにしています。コマンドラインでは % ですよ。 ・他にもいろいろな方法はありますけど一例だけ紹介しました。 ちなみに試していませんが、for 文を使えば ren も上手く利用できます。 その他: ・ワイルドカードの指定で拡張子は、最後のピリオドのフィールドを指します。 よって、『ren *.dat.gz *.gz』という指定ではすでに拡張子が『.gz』なので上手く出来なかったのです。 ・以上。参考に。
その他の回答 (1)
- luka3
- ベストアンサー率72% (424/583)
for /f "usebackq delims=. tokens=1" %i in (`dir /b *.dat.gz`) do echo ren %i.dat.gz %i.gz こうかな? 確認用にechoを入れてますので、echoを消せばリネームされます。
お礼
ありがとうございます。うまく実現できました。 for命令は知っておくと便利ですね。
お礼
バッチファイル内での%%の記述は躓くところでした。 分かり易い説明をありがとうございました。