2017-08-12 47 views
0

我需要使用.bat替換文件中的多個不同文本實例。批量替換文件中的多個文本

(注:SQF只是一個服務器配置文件,編碼是不是一個問題)

我曾嘗試:

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" 

但只執行一個命令。例如。 WOOD_WALL仍然存在。

而且

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

就創建了一個名爲BrickMe.sqf

一個空文件我也嘗試一個VBScript無濟於事。我寧願讓它能夠在任何Windows機器上運行,前提是代碼可以處理文件大小,但我不知道如何在不重複整個命令並花費很長時間的情況下替換不同文本的多個實例。

我也看過這個http://www.dostips.com/?t=batch.findandreplace 但不確定應該在哪裏放置我的「WOOD_WALL」實例和我的文件名。

我發現在谷歌上取代1個文件在多個文件中的結果堆,但幾乎沒有替換1個文件中的多個文本的任何東西。

故事:
我正在一個武裝突襲3服務器,並有內置的遊戲木製管理基本,我想轉換成煤渣基地。我之前完成了此操作,但只能手動更換實例名稱,Instance_ID和實體名稱。我想盡可能使用批處理文件,並將其上傳到http://www.exilemod.com以幫助其他管理員。這些文件通常不大於15兆字節。

我很喜歡Windows批處理文件,但是對於PowerShell來說是新的。

+0

我也看到了這一點,但我不明白如何從一個批處理文件運行它:$文件名=「TextFile.txt的」 $ OUTPUTFILE =「$文件名」 +「 .out「 Get-Content $ filename | Foreach-object {__'''','' -replace'\]','o'' -replace'\','u' }設置內容$ outputfile –

+1

您是在問一個批處理文件或Powershell?它們不是一回事,標籤的定義完全不同。你正在尋找一個或另一個。您要麼尋找通過cmd運行的批處理文件,要麼尋找在Powershell中運行的Powershell腳本。選擇一個,然後更正您的標籤並適當地提出問題。並請停止標記垃圾郵件。不要抓住每個聽起來很熟悉的標籤,而不要先閱讀標籤定義。 –

+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賓果!這就是我所追求的。謝謝。 :) –

+0

這樣做的伎倆。我認爲我的命令會疊加保存,因此保存第一次更改然後重新打開,執行第二次更改並重新保存,保持進度。工藤給你。 –

+0

如果你發現一個有用的答案,你應該考慮[接受答案](http://stackoverflow.com/help/accepted-answer)和/或[投票](https://stackoverflow.com/help/why -投票) – LotPings