0

私はこの 1 つの問題に約 1 週間取り組んできましたが、明らかな何かが欠けていると思います...私には 2 組の目が必要です。

この質問から始めて、回答で提供されているすべてのリンクを調査し、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 は現在空で、スクリプトからの出力ファイルを待っています。

3 番目のステートメントを適切に記述した場合、\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 に答える