题 通过Powershell复制文件列表


所以我试图将44k文件从一台服务器复制到另一台服务器。

我的Powershell脚本是:

Import-CSV f:\script\Listoffiles.csv | foreach $line {Move-item $_.Source $_.Destination}

使用CSV格式:

Source, Destination  
E:\folder1\folder2\file with space.txt, \\1.2.3.4\folder1\folder2\file with space.txt

我一直在:

A positional parameter cannot be found that accepts argument '\\1.2.3.4\folder1\folder2\file'.
At line:1 char:10
+ move-item <<<<  E:\folder1\folder2\file with space.txt \\1.2.3.4\folder1\folder2\file with space.txt
    + CategoryInfo          : InvalidArgument: (:) [Move-Item], ParameterBindingException
    + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.MoveItemCommand

所以我试过把两个路径都放在一边,而且我也是这样 Move-Item: Could not find a part of the path 错误。

谁能帮我?


5
2018-06-16 00:23




使用代码块降价代替 <code> 标签:) - MDMarra


答案:


您是否尝试在Move-Item参数周围放置引号而不是csv项?另外,删除$ line变量。

Import-CSV f:\script\Listoffiles.csv | foreach {Move-item "$_.Source" "$_.Destination"}

3
2018-06-16 02:58



谢谢你的提醒。最终我通过放弃$ line得到它有点工作,但后来我遇到了大量无法正常逃脱的角色问题。所以我最终使用Move工作了一个庞大的批处理文件。 - Driftpeasant
如果您有一个不起作用的数据示例,可以在此处添加吗?我很有意思找到一个始终有效的解决方案。 - uSlackr
导致问题的两个格式化为“name1&name2.txt” - 即使整个路径被引用,脚本也会为&符号返回错误。类似地,“Blahblah(第1和第2个).txt”会为括号括起的数据抛出错误,即使路径已被引用。 - Driftpeasant