2012-07-12 135 views

回答

3

下工作,如果在CSV的列被命名爲PathDestination

Import-Csv foo.csv -Delimiter "`t" | Copy-Item 

如果你的列被命名爲不同(FileTargetPath這裏)你需要一點翻譯:

Import-Csv foo.csv -Delimiter "`t" | ForEach-Object { 
    Copy-Item -Path $_.File -Destination $_.TargetPath 
} 

如果你都沒有列標題,你需要告訴Import-Csv說:

Import-Csv foo.csv -Delim "`t" -Headers Path,Destination | Copy-Item 

在批處理文件中的一樣:

for /f "skip=1 tokens=1,2 delims= " %%A in (foo.csv) do (
    rem        ↖ that's a tab 
    copy "%%~A" "%%~B" 
) 
+0

將這項工作如果包括路徑中的位置也如^ h :\ folder \ file.doc並且目標是h:\ folder1 \ – 2012-07-12 13:54:29

+0

是的。如果有疑問,請閱讀「Get-Help Copy-Item -Param Path」或查看該cmdlet的示例。 – Joey 2012-07-12 13:55:38

+1

不可否認,第一種解決方案有點像copout,因爲它利用了PowerShell的非常酷的特性,即在管道中傳遞數據可以通過屬性名稱使用參數。我目前很少使用它,但如果你的輸入數據看起來正確,它可以使一個非常短的腳本:) – Joey 2012-07-12 13:56:40