えいあーるれいの技術日記

ROS2やM5 Stack、Ubuntuについて書いています

Windowsのファイルを変更してみた(Shell)

最近は研究が忙しすぎて課題をすることすらきつい…

今の時期に忙しくしている自分も自分だが。

概要

リネームについて調べても全然いい結果が出なかったため何度かトライしたところうまくいったので書きます。

 最近、WindowsでMP4で保存されているファイルをMP3に変換したくなってきたのでリネームをすることにしました。ちなみに、Windows10でだの音楽が入っているMP4をMP3にリネームしても全く問題ありませんでした。しかし、音楽ファイルが2000件程度あり、いちいちリネームしていくのはあまりにも非効率的だし、ファイルの変換し損ねるのも嫌だ。そこでコマンドで一括リネームをすることにしました。

 さまざまなサイトでファイルの一括リネームの方法は紹介されている。しかし、全然通りませんでした。

何度かいろいろ試したところ通ったので軽く紹介します。

実装

>>for /R %i in (*mp4) do ren "%i" "*.mp3"

と打ち込むだけ。結果は、自分が今(cmd上で)いるディレクトリの子ディレクトリ以下のすべてのmp4ファイルをmp3ファイルに変更することができます。

解説

簡単に解説していきます。

まずは、do以下の部分

<%iを用いたループ文章> ren "%i" "*.mp3"

doより後ろ部分は実装部分となる。"%i"の部分を任意のファイル名(相対パスでも絶対パスでもOK)にする必要がある。すると、拡張子を含めた任意のファイルを.mp3ファイルに変更できる。「*」は「ワイルドカード」と呼ばれ、OS関係なくよく使うので覚えておきましょう。ワイルドカードは「*」以下のファイルを全て適用する。ここでは全角にしていますが、半角で入力してください。

%iには後述するforループによる代入が行われる。別に"i"である必要はないと思うけど…

次にfor の部分

for /R %i in (*mp4) do <実装部分>

pythonbashが混ざったみたいな文法ですね…

/Rでファイルを再帰的に検索することができます。

for /R 名称 in (条件) do <実装部分>

自分の環境ではこれで動きました。

以上です