【问题标题】:Getting error when using Copy-Item in Simple Powershell Script在简单 Powershell 脚本中使用 Copy-Item 时出错
【发布时间】:2016-02-17 05:01:00
【问题描述】:

运行以下使用 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:\test\testing\text.txt

  2. C:\Backup\testing

第一个是要复制的原始文件位置,第二个是要复制到的文件夹。谁能帮我弄清楚这两条路径中的“非法字符”是什么。错误指向源路径。

完整的错误代码如下:

 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

【问题讨论】:

  • 请发布您收到的确切错误消息。
  • 听起来你在某处有一个隐藏的角色,但我们需要未经修改的异常以获得更好的主意。您是否尝试使用-LiteralPath 作为Copy-Item 中的源参数?它通常适用于奇怪的字符。前任。 Copy-Item -LiteralPath $File -Destination $newdirectory -Force
  • 我刚刚编辑了我收到的错误
  • 我刚刚尝试使用 -LiteralPath 并得到了同样的错误。
  • 输入文件是否包含空行?

标签: powershell


【解决方案1】:

Out-String 在字符串的末尾放了一些东西,所以你需要修剪它:

$newDirectory = (($Directory | Out-String) -replace "C:\\test", "C:\Backup").TrimEnd()

...或者,删除Out-String--我不知道你为什么在那里:

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

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

PS C:\> $d = $Directory | out-string
PS C:\> $d.Length
17
PS C:\> $Directory.Length
15

如果您希望脚本在 C:\Backup 不存在的情况下创建子文件夹,请将以下内容放在 Copy-Item 行之前:

if(!(test-path $newDirectory)){
    New-Item $newDirectory -type directory
}

【讨论】:

  • 是的,我取下了字符串,它允许它复制,但它把它放到根“备份”文件夹中,而不是重新创建文件夹结构
  • copy-item 命令不会创建文件夹结构。如果 c:\Backup 下不存在正确的指定目录,则需要创建它。
  • 谢谢大家,我会使用 xcopy 或 robo。
  • 是的,作为一般的经验法则,xcopy 和 robocopy 已经编写了很多代码来很好地处理很多事情,所以如果他们能完成这项工作,通常更容易调用它们.
猜你喜欢
  • 1970-01-01
  • 2016-07-11
  • 1970-01-01
  • 1970-01-01
  • 2015-02-04
  • 2017-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多