如何使用Powershell将复制和重命名命令合并为一个?

时间:2013-01-16 20:01:05

标签: powershell

目前我正在使用PS根据CSV文件从网络位置复制文件,然后我使用相同数据的变体重命名它们。这要求我运行两个单独的命令。

如何将这些命令合并为一个?

拷贝:

import-csv C:\TEST\test.csv | foreach {copy-item -path $_.npath -destination 'C:\TEST\'}

粘贴:

import-csv C:\TEST\test.csv | foreach {rename-item -path $_.lpath -newname $_.newalias}

请注意,每种情况下的-path触发器引用一个单独的变量头,npath与lpath对应于网络文件位置,然后是一个手动输入的本地文件位置。

同样,我如何将此变量连接到常量数据。如果我有一个变量 fn 表示文件名和另一个路径,理论上我可以这样做:

foreach {rename-item -path 'C:\TEST\' + $_.fn

或者:

foreach {rename-item -path $_.path + $_.fn

1 个答案:

答案 0 :(得分:2)

只需附加两个命令

即可
import-csv C:\TEST\test.csv | foreach {copy-item -path $_.npath -destination 'C:\TEST\';rename-item -path $_.lpath -newname $_.newalias  }

对于你的第二个问题,有很多方法可以追加字符串

C:(...)WindowsPowerShell>$data = "bob"

C:(...)WindowsPowerShell>echo "this is a $data"

C:(...)WindowsPowerShell>$concat = "hi" + " george"

C:(...)WindowsPowerShell>$concat
hi george

C:(...)WindowsPowerShell>[string]::Format("{0} {1}","string 1","string 2")
string 1 string 2