• ベストアンサー

MSDOSからワイルドカード指定で複数ファイル名の一部を一括変更

MSDOSからワイルドカード指定で複数ファイル名の一部を一括変更する方法はありますでしょうか? 例えば、 「a.dat.gz」「b.dat.gz」「c.dat.gz」 上記のような複数ファイルを以下のように変更したいと思っています。 「a.gz」「b.gz」「c.gz」 ちなみに次のコマンドを試してみたのですがダメでした。 ren *.dat.gz *.gz 実際はバッチファイルから処理をさせたいと思っています。 よろしくお願いいたします。

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

  • ベストアンサー
  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.1

★本当に『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』なので上手く出来なかったのです。 ・以上。参考に。

kaimoka777
質問者

お礼

バッチファイル内での%%の記述は躓くところでした。 分かり易い説明をありがとうございました。

その他の回答 (1)

  • luka3
  • ベストアンサー率74% (299/401)
回答No.2

for /f "usebackq delims=. tokens=1" %i in (`dir /b *.dat.gz`) do echo ren %i.dat.gz %i.gz こうかな? 確認用にechoを入れてますので、echoを消せばリネームされます。

kaimoka777
質問者

お礼

ありがとうございます。うまく実現できました。 for命令は知っておくと便利ですね。

関連するQ&A

  • 複数ファイルの一括名称変更

    ファイル名が1234_200812061.datという形式になっているファイルが大量にあります。このファイル名の先頭部分1234_を削って後半部分200812061.datだけの名称に変更したいのです。 renコマンドを使ってもうまく行かないので恐らくバッチファイルでfor文などを使って処理できると思うのですが、うまく行きません。私が作ったバッチでは for /f "skip=5" %%A in (*.dat) do ren *.dat %%~nA.dat のように処理しているのですが、うまく行かないようです。 どなたかご教授していただけますでしょうか。

  • macのターミナルで、ファイル名を一括変更したいです。

    macのターミナルで、ファイル名を一括変更したいです。 windowsでいえば、 ren *.gif [風景]*.gif というコマンドをコマンドプロントでうつと、移動したディレクトリ先のファイル名が一括で変更されるとおもいます。 しかし、macでmvで同様のことをするとエラーが出ます。おそらくwindowsとか勝手が違うということはわかるのですが、できれば、macのターミナルでも同様のことができるようにしたいので、そのようなコマンドがあれば教えてください。

    • ベストアンサー
    • Mac
  • バッチファイルでファイル名を一括変更するには

    大変お世話になっております。 windows上で、100個程度のファイル名を、一括で変換するバッチファイルを作りたいのですが、renコマンドの使い方が分かりませんでした。 何方か、お分かりでしたら、ご教示頂けると大変助かります。 ファイル名は、下記の通りになります。 【下記は変更前のファイル名】 235-R2022001978.pdf 2345677-R2022001979.pdf iiii-R2022001980.pdf 896-R2022001981.pdf eee-R2022001982.pdf やりたい事は、各ファイル名の変更後がR以下の文字の名前にすることです。 例えば、『235-R2022001978.pdf』→『R2022001978.pdf』へリネームしたいです。

  • コマンドプロンプトでファイル名一括変更

    コマンドプロンプトのrenコマンドでフォルダ内の同一拡張子のファイル名の拡張子を一括変更することはできますが、 (例 ren *.txt *.htm ) 拡張子以外の共通部分を拡張子を含む形で一括変更することはできませんか? たとえば拡張子のないd01という文字列で終わるファイル名を一括してd01の部分を消して拡張子を.jpgにしたいのです。

  • ディレクトリ内のファイル名の一括変更できませんか?

    同じディレクトリにある test-sum.txt test-average.txt test-deviation.txt ... というファイルの名前を my-sum.dat my-average.dat my-deviation.dat ... と一括変更したいのですが、bash で可能でしょうか? よろしくお願いします!! ワイルドカード * の扱いが Windows のコマンドプロンプトと違うみたいで、とまどっています。。

  • 複数のファイル名の一部を変換したい

    あるディレクトリにある複数のファイルの一部の文字を別の文字に置き換えたいのですが、 どのようなコマンドで実現できますか? 変換前 *AAA* absdAAAfdsad.dat fdAAAsfds.txt fdffdAAAs.sh ffdfAAAdsAfds.xx 変換後 *BBB* absdBBBfdsad.dat fdBBBsfds.txt fdffdBBBs.sh ffdfBBBdsAfds.xx 変換したいファイル名は上記のようにファイル名の長さが違いますが、 各ファイル名の一部に共通の文字列が用いられています。 ファイルが100個ぐらいあるので手作業では大変なので、 これをコマンド一発で変換したいのです。 環境はcygwinでやっています。 もしwindowsのエクスプローラやDOSコマンドで実現可能ならそちらでも教えていただけると助かります。 よろしくお願いします。

  • ファイル名を変更して移動させるコマンド

    Windowsのバッチファイルで、ファイル名を変更してそのファイルを指定のフォルダに入れると言うものを作りたいです。 現在の手順は以下通りです。 1. Usbメモリ(gドライブ)に入っているA.datというファイルを名前変更でA_日付.datに変更。 2. そのファイルをデスクトップのbackupフォルダにコピー 3. Usbメモリのファイルを削除 これをusbを指してバッチファイルをクリックして完了させるようにしたいです。 どなたかお願いします。

  • フォルダ内のファイル名を一括変更したい

    windows10を使っています。 指定したフォルダ内のファイル名を一括変更したいです。 具体的には、以下のようにファイル名内の空白を「_」に置換したいです。 変更前:スクリーンショット 2021-01-01 104535.jpg ↓ 変更後:スクリーンショット_2021-01-01_104535.jpg バッチファイルで手軽に実行できるとうれしいです。 やりたいことの具体例: 空白置換.batを実行したら、空白置換.batが置いてあるフォルダ内のファイル名が一括変更できる。 空白置換.bat内で、変更対象とする拡張子を指定できる。 よろしくお願いいたします。

  • ファイル名の一括変更ツールについて

    業務上、大量のファイルのファイル名を変更する必要があり、ファイル名を一括変更するツールを探しています。 やりたいことは、ファイル名の特定位置の文字列を一括で変更することなのですが、変更後の文字はファイルによって異なるため、何らかの方法でそれを指定できるツールが必要と思っています。 想定しているのは、例えば以下のような機能です。 ・ファイル名の一部を格納フォルダ名に一括変更する。 例:「XXXX-AAAA-0001.pdf」等がフォルダ名BBBBに格納されていた場合、   BBBB配下のファイルを全て「XXXX-BBBB-0001.pdf」のように変換する。 または、 ・外部ファイル(またはそのツール)に変更前ファイル名と変更後ファイル名を指定して、読み込むことでファイル名を一括変更する。(変更パターンは複数あり) 使用端末はWindowsXPまたはWindows7です。 Excelのマクロ等でも出来そうだと思いますので、実装例等をご紹介いただくことでも問題ありません。 よろしくお願い致します。

  • 【コマンドプロンプト】複数フォルダのファイル名一括置換の方法について

    【コマンドプロンプト】複数フォルダのファイル名一括置換の方法について お世話になっております。 コマンドプロンプトを使用して、カレントフォルダ配下のすべてのフォルダに格納されているEXCELファイルの名称の最初に[LOCAL]という文字を加えたいと考えています。 ファイル一括置換を行うフリーソフト(ファイル名変換君など)では、可能なのですが、 対象のファイルは、バッチファイルで他のフォルダからファイルをコピーをしてきているため、ファイル名変更もコピーの際に一括でできないかと思い質問をさせていただきました。 現在、同じフォルダに格納されているファイルに対しては、下記にて実行はできています。 for %i in (*.xls) do ren %i [LOCAL]%i しかし、カレントフォルダの配下すべてのフォルダを対象にしたいため、下記のように変更すると、エラーとなってしまいます。 for /r %i in (*.xls) do ren %i [LOCAL]%i おそらく・・・変数%iに、ファイルのフルパスが格納されてしまい、思い通りの動作になっていないと推測しています。 どのように作成すればよいか教えていただけませんでしょうか。 よろしくお願いいたします。

専門家に質問してみよう