サブフォルダーも含めてすべてのファイルの拡張子を変更する方法

 
文書番号:20558




コマンドで指定したフォルダー以下のサブフォルダーも含めてすべてのファイルの拡張子を変更する方法です。

【すべてのファイルの拡張子を変更する】

  • 指定したフォルダー以下のサブフォルダーも含めてすべてのファイルのファイル名を変更します。
    現在の「ファイル名.拡張子」の後ろに「.txt」をつけたファイル名に変更します。
    
    set target_dir=対象のフォルダーパスを指定
    
    for /R %target_dir% %%i in (*.*) do ren %%i %%~nxi.txt
    
    
    コマンドの説明
    • /R は再帰的に下階層のフォルダに対して処理をすることを指定します。
    • %target_dir% を指定しない場合は現在のディレクトリで実行します。
    • %%i は取得したファイルのフルパスが格納される変数です。
    • (*.*) はファイルの検索パターンを指定しています。
      拡張子「.xlsx」を指定して処理対象を抽出する場合は(*.xlsx)と指定します。
      ファイル名「ABC」で始まるものを対象にする場合は(ABC*.*)と指定します。
    • ren でファイル名の変更を実行します。
      %%i のファイルを %%~nxi.txt に変更する指定です。 ここで「%%~nxi」はファイル名を取り出す特殊な指定をしています。
      %%~nxi」は「拡張子も含めたファイル名」を指定しています。

  • 上記でファイル名の後ろにつけた「.txt」をすべて外します。
    
    set target_dir=対象のフォルダーパスを指定
    
    for /R %target_dir% %%i in (*.txt) do ren %%i %%~ni
    
    
    コマンドの説明
    • (*.txt) はファイルの検索パターンを指定しています。
      拡張子が「.txt」のファイルをすべて抽出しています。
    • ren でファイル名の変更を実行します。
      %%i のファイルを %%~ni に変更する指定です。 ここで「%%~ni」はファイル名を拡張子なしで取り出す指定をしています。
      「ファイル名.xlsx.txt」は拡張子が「.txt」なのでそれを除いたファイル名は「ファイル名.xlsx」になります。


    「ren」はファイル名を変更するコマンドですが、ここのコマンドを変更することで他の処理にも応用できます。


  • 以下にファイル名を取り出す他の方法を記載します。
    %~i- すべての引用句 (") を削除して、i を展開します。
    %~fi- %i を完全修飾パス名に展開します。
    %~di- %i をドライブ文字だけに展開します。
    %~pi- %i をパス名だけに展開します。
    %~ni- %i をファイル名だけに展開します。
    %~xi- %i をファイル拡張子だけに展開します。
    %~si- 展開されたパスは短い名前だけを含みます。
    %~ai- %i をファイルの属性に展開します。
    %~ti- %i ファイルの日付/時刻に展開します。
    %~zi- %i ファイルのサイズに展開します。
    %~$PATH:i - PATH 環境変数に指定されているディレクトリを検索し、最初に見つかった完全修飾名に %i を展開します。
    環境変数名が定義されていない場合、または検索してもファイルが見つからなかった場合は、この修飾子を指定すると空の文字列に展開されます。
    修飾子を組み合わせて、複合結果を得ることもできます:
    %~dpi- %i をドライブ文字とパスだけに展開します。
    %~nxi- %i をファイル名と拡張子だけに展開します。
    %~fsi- %i を完全なパスと短い名前だけに展開します。
    %~dp$PATH:i - PATH 環境変数に指定されているディレクトリを検索して %i を探し、最初に見つかったファイルのドライブ文字とパスだけに展開します。
    %~ftzai- %i を DIR コマンドの出力行のように展開します。