我已经在这个问题上工作了一周,并且认为我遗漏了一些明显的东西......我需要几双眼睛。
从这个问题开始,我研究了答案中提供的所有链接,并且我正在运行从 MS Connect 收集的以下脚本:
$txtPath = "c:\users\xxxxxx\desktop\cgc\tx"
$txtPath2 = "c:\users\xxxxxx\desktop\cgc\tx2"
get-childitem $txtPath | foreach {
Move-Item -literalpath $txtPath2.Name $_.Name.Replace ("]" | "[", "_")
}
两条路径都存在。*\tx 包含 35 个 *.txt 文件,有些名称中带有方括号,有些没有。*\tx2 当前为空,等待脚本的输出文件。
如果我正确地编写了第三个语句,我会将每个子项从 \tx 传递给函数,在该函数中,当文件被移动并重新保存到新位置 \tx2 时,方括号将更改为下划线。
不幸的是,我收到此错误:
Expressions are only allowed as the first element of a pipeline.
At C:\users\xxxxxx\desktop\cgc\rni.ps1:4 char:71
+ Move-Item -literalpath $txtPath2.Name $_.Name.Replace ("]" | "[", "_" <<<< )
+ CategoryInfo : ParserError: (:) [], ParseException
+ FullyQualifiedErrorId : ExpressionsMustBeFirstInPipeline
如果我正确地解释了错误,那么某些东西会阻止近距离的括号被识别。我是否需要某种转义字符作为括号?我尝试在引号内使用反引号转义和反斜杠转义,但这导致了同样的错误。
随着引号外的转义,我得到了这个错误。
The term '\]' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling
of the name, or if a path was included, verify that the path is correct and try again.
At C:\users\xxxxxx\desktop\cgc\rni.ps1:4 char:61
+ Move-Item -literalpath $txtPath2.Name $_.Name.Replace (\"]" <<<< | \"[", "_")
+ CategoryInfo : ObjectNotFound: (\]:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
我错过了什么?