PowerShell でファイルをコピーして名前を変更する
この記事の主な目的は、ファイルをコピーして別のディレクトリまたは場所に別の名前で貼り付ける、最も基本的な IO 操作を示すことです。
PowerShell でファイルをコピーして名前を変更する
CSV ファイルを処理しているときに、特定の CSV ファイルをコピーして、CSV から抽出したファイル名で別の場所に貼り付ける必要がある場合があります。
次の CSV を検討してください。
iid  firstname   lastname    profession     oldfilepath newfilename
--  ---------   --------    ----------     ----------- -----------
100 Annecorinne Fitzsimmons doctor         D:\\old.csv new2.csv
101 Mallory     Dunkin      firefighter    D:\\old.csv new3.csv
102 Carlie      Torray      firefighter    D:\\old.csv new4.csv
103 Marleah     Boycey      worker         D:\\old.csv new5.csv
104 Lusa        Corabella   worker         D:\\old.csv new6.csv
105 Shandie     Chesna      worker         D:\\old.csv new7.csv
106 Melisent    Ochs        doctor         D:\\old.csv new8.csv
107 Cathie      Hurley      firefighter    D:\\old.csv new9.csv
108 Kerrin      Regan       doctor         D:\\old.csv new10.csv
109 Alie        Lewes       police officer D:\\old.csv new11.csv
110 Jsandye     Gemini      police officer D:\\old.csv new12.csv
111 Marguerite  Myrilla     police officer D:\\old.csv new13.csv
112 Florie      Dichy       developer      D:\\old.csv new14.csv
113 Krystle     Gaulin      doctor         D:\\old.csv new15.csv
114 Odessa      Nerita      developer      D:\\old.csv new16.csv
次に、この CSV をコピーして、CSV ファイルの列から取得したカスタム名で別のディレクトリに貼り付ける必要があります。 この場合、列の名前は newfilename です。
次のコードを検討してください。
$csv = "D:\\old.csv"
Import-Csv $csv | % { write-host "Copying $($_.oldfilepath) to D:\TEST\$($_.newfilename)..." | Copy-Item $_.oldfilepath -Destination "D:\TEST\$($_.newfilename)" }
その後、以下を使用してファイルがコピーされたことを確認できます。
> .\script.ps1
> ls D://TEST
   Directory: D:\TEST
Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---           11/1/2022 10:27 PM            861 new10.csv
-a---           11/1/2022 10:27 PM            861 new11.csv
-a---           11/1/2022 10:27 PM            861 new12.csv
-a---           11/1/2022 10:27 PM            861 new13.csv
-a---           11/1/2022 10:27 PM            861 new14.csv
-a---           11/1/2022 10:27 PM            861 new15.csv
-a---           11/1/2022 10:27 PM            861 new16.csv
-a---           11/1/2022 10:27 PM            861 new2.csv
-a---           11/1/2022 10:27 PM            861 new3.csv
-a---           11/1/2022 10:27 PM            861 new4.csv
-a---           11/1/2022 10:27 PM            861 new5.csv
-a---           11/1/2022 10:27 PM            861 new6.csv
-a---           11/1/2022 10:27 PM            861 new7.csv
-a---           11/1/2022 10:27 PM            861 new8.csv
-a---           11/1/2022 10:27 PM            861 new9.csv
上記のコードを使用して、列の 1つからコピーするファイルと、保存する新しいファイルの名前を抽出できます。
プログラム全体の流れは次のとおりです。
- パスとファイル名を抽出する CSV ファイルのパスは、
csvという名前の変数に格納されます。$記号は、主に PowerShell で変数を宣言およびアクセス/設定するために使用されます。 Import-csvコマンドは、CSV ファイルからデータを抽出します。- 関連データが抽出された後、
|を使用して次のコマンドにパイプライン処理されます。 オペレーター。 %演算子 (foreachループの別名) を使用して列oldfilepath iterativelyとnewfilenameからデータを抽出し、Copy-Itemコマンドに渡してファイルをコピーします。 指定されたソースから宛先へ (この場合、CSV で指定されていません)。
Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.
LinkedIn