我想使用PowerShell(v.1)仅复制匹配模式的文件。该文件命名规则为:PowerShell复制项目方法失败 - 文件夹中的括号
Daily_Reviews[0001-0871].journal
Daily_Reviews[1002-9887].journal
[...]
当我运行它,方法“复制项目”抱怨:
为cmdlet的动态参数,无法检索。指定通配符模式无效:Daily_Reviews [0001-0871] .journal
+拷贝项目< < < < $ $的资源文件目的地
的错误是由于 “[” 和 “]” 中的文件名称。当我删除左右括号时,它按预期工作。但看起来像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
}
谢谢。我做出了你所建议的改变,并且我从Copy-Item中得到了同样确切的投诉......奇怪的东西。我想知道它是否是文件名中的括号? - – Slinky 2013-04-10 16:19:43
这是因为文件名中的“[”和“]”。当我删除左右括号时,它按预期工作。需要能够使用括号解析文件 – Slinky 2013-04-10 16:25:31
方括号要求在调用'copy-item'时使用'-literalpath'(总是想知道什么时候需要)。我修改了我的代码。 – alroc 2013-04-10 16:40:39