2012-07-12 113 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