1
我想创建一个目录结构,如果它不存在于另一个位置。它可以工作,但是在名称中带有括号的任何目录中都会出现错误。我想我必须以某种方式逃避,但不知道如何。创建目录结构,如果它不存在Powershell
Script代码:
$source = "c:\data"
$destination = "c:\scrap\data"
Get-ChildItem -Path $source -Recurse -Force |
Where-Object { $_.psIsContainer } |
ForEach-Object { $_.FullName -replace [regex]::Escape($source), $destination } |
ForEach-Object {
if (!(Test-Path -path $_)) { $null = New-Item -ItemType Container -Path $_ }
}
“它的工作原理,但我得到一个错误。”这是否意味着它的工作* besdies *有错误的地方,或即使括号目录工作正常,只有错误文本写入?如果是后者,只需将'-ErrorAction SilentlyContinue'添加到抛出无用错误的cmdlet中即可。 – latkin
适合我,没有错误。你得到的错误是什么?请将'$ error [0] .exception.tostring()'的输出添加到您的帖子中。 –
如果名称中包含一个括号的目录已经存在,它会尝试再次创建并且出现错误: 'New-Item:具有指定名称C:\ scrap \ data \ Evernote \ backup \ Untitled note的项目[2] _文件已经存在。 在C:\ data \ PowerShell \ Untitled5.ps1:9 char:67 + ForEach-Object {if(!(Test-Path -path $ _)){$ null = New-Item <<<< -ItemType Container (C:\ scrap \ data \ E ... note [2] _files:String)[New-Item],IOException + FullyQualifiedErrorId:DirectoryExist,Microsoft.PowerShell.Commands .NewItemCommand' – user1612851