在Simple Powershell脚本中使用Copy-Item时出错

时间:2016-02-16 20:01:57

标签: powershell

我收到错误消息"路径中的非法字符"运行以下使用Copy-Item命令的简单脚本时:

$Files = Get-Content output.txt
  ForEach($File in $Files){
     echo $File
     $Directory = Split-Path -Parent $File
     $newDirectory = ($Directory | Out-String) -replace "C:\\test", "C:\Backup"
    echo $newDirectory
    Copy-Item $File $newDirectory -force -recurse
}

正如您所看到的,$ Files变量将每行拉入一个数组。每一行实际上都是文件路径和名称。回声输出看起来很好,如下所示:

  1. C:\测试\测试\的text.txt

  2. C:\备份\测试

  3. 第一个是要复制的原始文件位置,第二个是要复制到的文件夹。任何人都可以帮我弄清楚"非法角色"是在这两条路上。错误指向源路径。

    完整错误代码如下:

     Copy-Item : Illegal characters in path.
     At C:\users\lane.pulcini\desktop\searchfiles\testcopy.ps1:7 char:10
     + Copy-Item <<<<  $File $newDirectory -force -recurse
     + CategoryInfo          : NotSpecified: (:) [Copy-Item], ArgumentException
     + FullyQualifiedErrorId :       S   System.ArgumentException,Microsoft.PowerShell.Commands.CopyItemCommand
    

1 个答案:

答案 0 :(得分:2)

import random def randnums(): numbers = [] for count in range(6): number = random.randint(1,9) numbers.append(number) print(number) print(sum(numbers)) randnums() 在字符串的末尾添加了一些东西,所以你需要修剪它:

Out-String

...或者,删除$newDirectory = (($Directory | Out-String) -replace "C:\\test", "C:\Backup").TrimEnd() - 我不确定你为什么会在那里:

Out-String

您可以通过检查长度属性来看到这一点:

$newDirectory = $Directory -replace "C:\\test", "C:\Backup"

如果您希望脚本在C:\ Backup下创建子文件夹(如果它不存在),请将以下内容放在PS C:\> $d = $Directory | out-string PS C:\> $d.Length 17 PS C:\> $Directory.Length 15 行之前:

Copy-Item