我收到错误消息"路径中的非法字符"运行以下使用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变量将每行拉入一个数组。每一行实际上都是文件路径和名称。回声输出看起来很好,如下所示:
C:\测试\测试\的text.txt
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 :(得分: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