PowerShell 复制文件并重命名
Salman Mehmood
2025年2月25日
PowerShell
PowerShell File

本文的主要目的是演示最基本的 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
使用上述代码,我们可以从其中一列中提取要复制的文件,以及要保存的新文件名称。
程序的整体流程如下:
- 要提取路径和文件名的 CSV 文件的路径存储在名为
csv
的变量中。$
符号主要用于在 PowerShell 中声明和访问/设置变量。 Import-csv
命令从 CSV 文件中提取数据。- 提取相关数据后,使用
|
操作符将其传递给以下命令。 %
操作符(foreach
循环的别名)用于从oldfilepath
和newfilename
列中迭代提取数据,然后将其传递给Copy-Item
命令,以将文件从给定源复制到目标(在我们的例子中未在 CSV 中指定)。
Enjoying our tutorials? Subscribe to DelftStack on YouTube to support us in creating more high-quality video guides. Subscribe
作者: Salman Mehmood
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