我正在尝试使用 PowerShell (v.1) 仅复制与模式匹配的文件。文件命名约定为:
Daily_Reviews[0001-0871].journal
Daily_Reviews[1002-9887].journal
[...]
当我运行它时,“复制项目”方法抱怨:
无法检索 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
}