2

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

1 回答 1

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
于 2013-01-16T20:04:25.493 回答