1

如果目录结构在其他位置不存在,我正在尝试创建它。它可以工作,但是在名称中带有括号的任何目录上都会出现错误。我想我必须以某种方式逃避它,但不知道如何。

脚本代码:

$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 $_ }
  }
4

2 回答 2

5

这是一个较短的解决方案:

Copy-Item -Path $source -Destination $destination -Filter {$_.PSIsContainer} -Recurse -Force
于 2012-09-17T08:09:26.473 回答
2

知道了。错误是由于方括号造成的。它们用于模式匹配(请参阅此处),因此Test-Path实际上会检查

C:\scrap\data\Evernote\backup\Untitled note 2_files

这不存在。你必须使用-LiteralPath来避免这种情况。

于 2012-09-16T21:21:55.170 回答