我试图创建一个目录结构,如果它不在另一个位置。它可以工作,但是在名称中带有方括号的任何目录上都会出现错误。我想我必须以某种方式逃避那,但不知道如何。
脚本代码:
$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 $_ }
}
最佳答案
得到它了。该错误是由于方括号引起的。它们用于模式匹配(请参阅here),因此Test-Path
实际上检查
C:\scrap\data\Evernote\backup\Untitled note 2_files
不存在。您必须使用
-LiteralPath
避免这种情况。
关于powershell - 创建目录结构(如果Powershell中不存在),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12448513/