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