PowerShell を使用してファイルとフォルダーの名前を変更する
ファイルとフォルダーの名前変更は、おそらく Windows オペレーティング システムの基本機能の 1つです。 ファイルを右クリックして名前の変更
を選択すると、GUI を介してファイルとフォルダーの名前を変更できます。
複数のファイルの名前を変更する必要がある場合は、自動化によって対処する方が効率的です。 この記事では、ファイルとフォルダーのフィルター処理と、Windows PowerShell を使用してファイル名を変更し、ファイル拡張子を変更する方法について説明します。
PowerShell でのファイルとフォルダーのフィルター処理
Windows PowerShell の Get-ChildItem
コマンドは、指定されたディレクトリまたは場所にあるオペレーティング システムの項目を取得します。 また、コマンドレットで指定する場所は、レジストリ、ファイル システム、または証明書ストアにすることができます。
この記事の例では、ファイルとフォルダーに焦点を当てます。
構文:
Get-ChildItem -Path C:\PS\Temp
上記のコマンドで、Get-ChildItem
コマンドレットは、-Path
パラメーターの指定された値からすべてのアイテムを取得します。 Get-ChildItem
コマンドレットを実行すると、PowerShell コンソールにファイル、ディレクトリが Mode
、LastWriteTime
、Length
(ファイル サイズ)、および Name
プロパティと共に表示されます。
出力:
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----l 18/01/2022 8:52 pm Microsoft
d----l 20/12/2021 3:36 pm Cisco
-a---l 30/12/2021 3:24 pm (151) backup_phrase.txt
-a---l 17/06/2021 3:23 am (410049) CEF17501168.pdf
-a---l 16/05/2021 3:32 am (677) default.txt
-a---l 21/08/2020 9:06 am (2240) test.csv
-a---l 26/06/2021 8:25 am (63399) banner.jpg
-a---l 09/03/2021 10:48 pm (143) inventory.xlsx
<SNIP>
-Filter
パラメーターを使用すると、検索結果を 1つの式だけで絞り込むことができます。 エイリアス gci
を Get-ChildItem
コマンドの代わりに使用して、よりシームレスな書き込みエクスペリエンスを実現することもできます。
コード例:
gci -Filter C:\PS\Temp\* -Filter *.xlsx
出力:
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---l 09/03/2021 10:48 pm (143) inventory.xlsx
<SNIP>
複数の条件を受け入れる -Include
パラメーターを使用できます。 したがって、-Include
パラメータは -Filter
パラメータよりも優れていると言えます。
ただし、-Include
パラメーターでは、式に -Path
パラメーターが存在する必要があります。
コード例:
gci -Path C:\PS\Temp\* -File -Include CEF*.pdf, *.xlsx, *.txt
出力:
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---l 17/06/2021 3:23 am (410049) CEF17501168.pdf
-a---l 16/05/2021 3:32 am (677) default.txt
-a---l 09/03/2021 10:48 pm (143) inventory.xlsx
<SNIP>
-Include
スイッチ パラメータを使用する場合、パスの末尾にワイルドカード アスタリスク (*
) を含める必要があります。 このワイルドカードは、-Include
パラメーターで定義された特定の拡張子を持つすべての子パス項目を照会していることを示します。
PowerShell でファイルの名前を変更する
Windows PowerShell の名前変更コマンド Rename-Item
は、ファイルやフォルダーなどのオペレーティング システム アイテムのファイル名を変更するために機能します。 たとえば、TestFile.txt
の名前を RenamedFile.txt
に変更します。
コード例:
Rename-Item -Path '.\TestFile.txt' -NewName 'RenamedFile.txt'
gci -Filter 'RenamedFile.txt'
ここで、gci
コマンドを開始して特定のアイテムをフィルタリングすると、ファイルの名前が変更されたことを確認できます。
出力:
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 12/10/2021 11:38 PM 2982 RenamedFile.txt
Rename-Item
コマンドレットは、特定のファイルのファイル名を変更するだけでなく、ファイルの形式を変更することもできます。 たとえば、以下のコード スニペットは、Get-ChildItem
コマンドと Rename-Item
コマンドの組み合わせを使用して、すべてのファイルを .txt
形式でフィルタリングし、それらのファイル形式を .csv
に変更します。
コード例:
gci *.txt | Rename-Item -NewName { $_.Name -replace '.txt', '.csv' }
gci -Filter *.csv
出力:
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 12/10/2021 11:38 PM 2982 RenamedFile.csv
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn