2013-01-16 83 views
2

目前我使用PS從基於CSV文件的網絡位置複製文件,然後使用相同數據的變體重命名它們。這要求我運行兩個單獨的命令。如何將複製和重命名命令合併爲一個使用Powershell的命令?

如何將這些命令合併爲一個?

複製:

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 

回答

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 
+0

我正在尋找一種方法來整合這兩個命令來訪問只有一個變量,即是否有一個命令,允許您複製一個文件,然後重命名它?這將類似於:foreach {copy-item -path $ _。path -destination'C:\ TEST \'-newname $ _。newalias}?這裏的問題是沒有複製項目的新名稱觸發器。關於追加一個字符串,你可以通過簡單地使用加號連接兩個變量,即$ _。path + $ _。fn會起作用嗎? – toolshed

+0

只需在複製項目複製項目路徑$ _的目標參數中使用字符串連接。npath -destination「C:\ TEST \ $ _ newalias」 – rerun

+0

「C:\ TEST \」並不總是恆定的。有時我需要追加$ _。fn到$ _。路徑來獲得完整的文件路徑。我試過$ _。path + $ _。fn,但是這會導致錯誤。 – toolshed