目前我正在使用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
答案 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