0

我已经在这个问题上工作了一周,并且认为我遗漏了一些明显的东西......我需要几双眼睛。

这个问题开始,我研究了答案中提供的所有链接,并且我正在运行从 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

我错过了什么?

4

1 回答 1

3
于 2013-01-30T14:42:51.533 回答