0
我有一个制表符分隔的文件,第一列包含文件的当前位置,第二列包含我希望将文件复制到的位置。从制表符分隔的文件中批量复制文件
如何创建一个脚本来自动执行此操作,例如Powershell或Windows批处理?
非常感谢
布伦丹
我有一个制表符分隔的文件,第一列包含文件的当前位置,第二列包含我希望将文件复制到的位置。从制表符分隔的文件中批量复制文件
如何创建一个脚本来自动执行此操作,例如Powershell或Windows批处理?
非常感谢
布伦丹
下工作,如果在CSV的列被命名为Path
和Destination
:
Import-Csv foo.csv -Delimiter "`t" | Copy-Item
如果你的列被命名为不同(File
和TargetPath
这里)你需要一点翻译:
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"
)
将这项工作如果包括路径中的位置也如^ h :\ folder \ file.doc并且目标是h:\ folder1 \ – 2012-07-12 13:54:29
是的。如果有疑问,请阅读“Get-Help Copy-Item -Param Path”或查看该cmdlet的示例。 – Joey 2012-07-12 13:55:38
不可否认,第一种解决方案有点像copout,因为它利用了PowerShell的非常酷的特性,即在管道中传递数据可以通过属性名称使用参数。我目前很少使用它,但如果你的输入数据看起来正确,它可以使一个非常短的脚本:) – Joey 2012-07-12 13:56:40