PowerShell 复制项方法失败

PowerShell 复制项方法失败

我正在尝试使用 PowerShell (v.1) 仅复制与模式匹配的文件。文件命名约定为:

Daily_Reviews[0001-0871].journal
Daily_Reviews[1002-9887].journal
[...]

当我运行它时,“Copy-Item”方法抱怨:

无法检索 cmdlet 的动态参数。指定的通配符模式无效:Daily_Reviews[0001-0871].journal
+ Copy-Item <<<< $sourcefile $destination

这是因为文件名中有“[”和“]”。当我删除左右括号时,它可以正常工作。但看起来 PowerShell 1 没有 -LiteralPath 标志,那么有没有其他方法可以让 Copy-Item 在 PowerShell 1 中与包含括号的文件名一起工作?

$source = "C:\Users\Tom\"
$destination ="C:\Users\Tom\Processed\"

if(-not(Test-Path $destination)){mkdir $destination | out-null}


ForEach ($sourcefile In $(Get-ChildItem $source | Where-Object { $_.Name -match "Daily_Reviews\[\d\d\d\d-\d\d\d\d\].journal" }))
{

  Copy-Item $sourcefile $destination
 }

答案1

好吧,经过进一步研究后,我找到了一个解决方法:

$src = [Management.Automation.WildcardPattern]::Escape($sourcefile)
Copy-Item  $src $destination

相关内容