如果Powershell中不存在目录结构,请创建目录结构

时间:2012-09-16 16:14:24

标签: powershell

我正在尝试创建一个目录结构,如果它在另一个位置不存在。它工作正常,但我在名称中带括号的任何目录上都出错。我想我不得不以某种方式逃脱,但不知道如何。

脚本代码:

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

2 个答案:

答案 0 :(得分:5)

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

Copy-Item -Path $source -Destination $destination -Filter {$_.PSIsContainer} -Recurse -Force

答案 1 :(得分:2)

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

  

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

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