2017-08-12 70 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