2016-02-16 21 views
0

运行以下简单的脚本,利用复制-Item命令时,我收到错误消息“路径中具有非法字符”获取错误$ Files变量将每行拉入数组中。每一行实际上是一个文件路径和名称。回声输出看起来很好,并且下面:在简单PowerShell中使用拷贝项目时,脚本

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

  2. C:\备份\测试

第一个是原单文件要复制的位置,第二个是将其复制到的文件夹。任何人都可以帮我弄清楚这两条路上的“非法角色”是什么。错误指向源路径。

完全错误代码如下:

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 
+0

请张贴您收到的确切错误消息。 –

+0

听起来就像你在某个地方有一个隐藏的角色,但我们需要未经修改的例外以获得更好的想法。你是否试过在'Copy-Item'中使用'-LiteralPath'作为源参数?它通常用奇怪的角色更好地工作。防爆。 '复制项目-LiteralPath $文件 - 目标$ newdirectory -Force' –

+0

我刚刚编辑与我收到的错误 – HondaKillrsx

回答

2

Out-String正在对字符串的结束的东西,所以你需要修剪:

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

...或者,删除Out-String - - 我不知道为什么你有它存在:

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

你可以看到这家b Ÿ检查length属性:

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

如果你想脚本来创建下C:\下的备份,如果不存在的话,将Copy-Item行之前执行以下操作:

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

是的,我拿出串关,这使得它能够复制,但它把它放到根“备份”文件夹,而不是重新创建的文件夹stucture – HondaKillrsx

+0

好去处 - 这是行尾0D0A结束.. – mcr

+0

复制项命令不会创建文件夹结构。如果正确的指定目录不存在于c:\ Backup下,则需要创建它。 –