我正在使用以下命令将文件从网络共享复制到基于 CSV 文件的本地硬盘驱动器。
import-csv C:\TEST\test.csv | foreach {copy-item -path $_.npath -destination 'C:\TEST\'}
下一步是使用不同的 CSV 文件根据当前文件名重命名这些文件。
是否有一个命令可以让我复制和项目并重命名它?
我正在使用以下命令将文件从网络共享复制到基于 CSV 文件的本地硬盘驱动器。
import-csv C:\TEST\test.csv | foreach {copy-item -path $_.npath -destination 'C:\TEST\'}
下一步是使用不同的 CSV 文件根据当前文件名重命名这些文件。
是否有一个命令可以让我复制和项目并重命名它?
If you have a CSV containing two columns, oldfilepath and newfilename, then you can use the following.
Import-Csv C:\test.csv | % { Copy-Item -Path $_.oldfilepath -Destination "C:\TEST\$($_.newfilename)" }
Notice how the $_.newfilename
is encapsulated inside a $()
. That's because $_.newfilename
is an expression (since we are getting a property out of the variable), and not a variable. $()
tells PowerShell to solve the expression before using it in the string. If we don't use it, it would have used the whole csv-object for that row($_
) as a string and returned an error.
如果您的原始 CSV 中也有新名称,您将能够使用它在复制路径的末尾指定一个文件名。复制项 CMDlet 允许您指定目标文件名
Copy-Item C:\TEST\file1.jpg C:\TEST\file2.jpg
将复制 file1.jpg 并将其重命名为 file2.jpg
要将变量连接到路径字符串的末尾,您可以使用这样的双引号:
Copy-Item C:\Path\To\File\file.ext "C:\Path\To\New\File\$newfilename"
请注意, -path 和 -destination 并不是真正必要的,因为它们是由位置暗示的。