2017-08-12 2 views
0

ファイル内の複数の異なるテキストインスタンスを.batを使用して置き換える必要があります。ファイル内の複数のテキストをバッチ置換する

powershell -Command "(gc Structures.sqf) -replace 'WOOD_WALL', 'CINDERBLOCK_WALL' | Out-File BrickMe.sqf" 

powershell -Command "(gc Structures.sqf) -replace 'e614ee17-4467-4d51-a3f2-d4faa61de89e', 'a59f5b71-2b9a-45a2-85bb-ec29a47f78aa' | Out-File BrickMe.sqf" 

powershell -Command "(gc Structures.sqf) -replace 'Wood Wall', 'Cinderblock Wall' | Out-File BrickMe.sqf" 

しかし、それだけで最後のコマンドを実行します:私は試してみました

(注SQFは、エンコーディングは問題ではない、単なるサーバーの設定ファイルです)。例えば。 WOOD_WALLは残ります。

そして

sed -e "s/WOOD_WALL/CINDERBLOCK_WALL/" -e "s/Wood Wall/Cinderblock Wall/" <Structures.sqf>BrickMe.sqf 

ちょうど私が無駄にVBScriptをもを試してみましたBrickMe.sqf

と呼ばれる空のファイルを作成します。私はむしろコードがファイルサイズを扱うことができるならば、どのWindowsマシンでも実行できるようにしたいと思いますが、コマンド全体を繰り返したり、長い時間をかけたりすることなく、異なるテキストの複数のインスタンスを置き換える方法はわかりません。

私もこのことを見てきましたhttp://www.dostips.com/?t=batch.findandreplace "WOOD_WALL"インスタンスとファイル名はどこに置くべきかは不明でした。

私は、複数のファイルの1つのテキストを置き換えるためにgoogleのヒープを見つけましたが、1つのファイルの複数のテキストを置き換えることはほとんどありません。

ストーリー:
私はArma 3サーバーを実行していて、私はシンナブロックベースに変換したい木製の管理ベースをゲームに作りました。私は前にこれを行ったが、インスタンス名、Instance_IDおよびエンティティ名を置き換えることによってのみ手動で行った。可能であればバッチファイルを使用してそれを行い、他の管理者を助けるためにhttp://www.exilemod.comにアップロードしたいと思います。ファイルは、通常、サイズが15メガバイト以下です。

私はWindowsのバッチファイルですばらしいですが、PowerShellを初めて使用しています。

+0

私もこれを見てきましたが、私はバッチファイルから実行する方法を理解していない:$ファイル名=「textfile.txt」 $ OUTPUTFILE =「$ファイル名」+ " .out " Get-Content $ filename | Foreachオブジェクト{ $ _ -replace '\ ['、 'a'] -replace '\]'、 'o' ' -replace' \ | '、' u ' } |セットコンテンツ$ outputfile –

+1

バッチファイルまたはPowershellについて質問していますか?それらは同じものではなく、タグの定義はまったく異なります。あなたはどちらかを探しています。あなたは、cmdを介して実行されるバッチファイル、またはPowershellで実行されるPowershellスクリプトを探しています。 1つを選択し、タグと質問を適切に修正します。そして、タグのスパムを止めてください。最初にタグ定義を読まずに、使い慣れたタグをつかんではいけません。 –

+0

また、コンテンツについて全く知らないときにテキストを置き換える方法を教えてください。 –

答えて

2

あなたの行動が成功していないことは驚くことではありません。

元の入力ファイルを使用して、前の操作を上書きするように、アクションを実行して同じ出力ファイルに保存します。

試してみてください。

powershell -Command "(gc Structures.sqf) -replace 'WOOD_WALL', 'CINDERBLOCK_WALL' -replace 'e614ee17-4467-4d51-a3f2-d4faa61de89e', 'a59f5b71-2b9a-45a2-85bb-ec29a47f78aa' -replace 'Wood Wall', 'Cinderblock Wall' | Out-File BrickMe.sqf" 
+0

AHH BINGO!それは私が後にしたものです。ありがとうございました。 :) –

+0

それはトリックでした。私は自分のコマンドがセーブを積み重ねると思ったので、最初の変更を保存してからもう一度開いて、2番目の変更を実行して、再保存して進行を保ちます。あなたに工藤さん。 –

+0

回答が参考になる場合は、[回答を受け入れる](http://stackoverflow.com/help/accepted-answer)および/または[投票する](https://stackoverflow.com/help/why)を検討してください。 -投票) – LotPings

関連する問題