.CMD Script to Find&替换多个文件中的文本

时间:2013-02-15 13:14:28

标签: batch-file replace find cmd

在这里编写一些泡菜新手。我对.cmd或.bat文件等几乎一无所知,但我明白.cmd是我正在进行的一个小项目的方法。基本上,我正在寻找一个文件,当执行该文件时,它会改变位于与.cmd文件位于同一文件夹中的两个单独的.ini文件中的两条非常特定的行。

对于NewGame.ini,我非常希望更改以下行:

FullHealthLimit = 1000

...到...

FullHealthLimit = 9999

对于NewGameUI.ini,我希望更改以下行:

m_PosOffset =(X = 25,Y = -99)

...到...

m_PosOffset =(X = -9999,Y = -9999)

就是这样。我只需要一个可执行文件来执行两个 - 希望 - 非常基本的任务。原因是我和我的朋友真正想要修改某些视频游戏,但希望更容易分发文件。

我会说实话:我在尝试实施其他主题的解决方案时遇到了很多麻烦,并使其适用于我的情况(主要是因为存在导致悲伤的等号),我开始怀疑如果它甚至可能。我在我的智慧结束,我告诉你! ;)

如果有人能够为我提供必要的代码,准备好被压缩成文本文件并保存为.cmd文件或诸如此类的东西,那么我将永远感激不尽。我只想要我和我的小圈子能够在我们卑微的社区中分发我们的小mod。

非常感谢您阅读并希望调查我的困境!我非常感谢任何帮助。干杯!

1 个答案:

答案 0 :(得分:0)

这里有一些代码可以解决这个问题。我没有测试它,所以你必须尝试一下,看看它做了什么 - 然后报告是否有任何异常。只需将Fix.bat文件放在与两个INI文件相同的文件夹中,然后从cmd提示符(来自包含文件的目录)运行它。

Fix.bat

@echo off

for /f "eol= delims=" %%i in (NewGame.ini) do (
  if "%%i"=="FullHealthLimit = 1000" (
    echo FullHealthLimit = 9999>> NewGame2.ini
  ) else (
    echo %%i>> NewGame2.ini
  )
)

echo [Unreal.Game_MaxAmmo]>>NewGame2.ini
echo p_zApplyOffset=true>>NewGame2.ini
echo p_zPosOffset=(X=-500,Y=-333)>>NewGame2.ini

:: Once you know it works, move the '::' from the next line to the first 'ren' line
::del NewGame.ini
ren NewGame.ini OldNewGame.ini
ren NewGame2.ini NewGame.ini

for /f "eol= delims=" %%i in (NewGameUI.ini) do (
  if "%%i"=="m_PosOffset=(X=25,Y=-99)" (
    echo m_PosOffset=^(X=-9999,Y=-9999^)>> NewGameUI2.ini
  ) else (
    echo %%i>> NewGameUI2.ini
  )
)

:: Once you know it works, move the '::' from the next line to the first 'ren' line
::del NewGameUI.ini
ren NewGameUI.ini OldNewGameUI.ini
ren NewGameUI2.ini NewGameUI.ini

您可以看到它不会以任何方式更改原始.ini文件,并且只是为了安全而将其重命名为OldNewGame.iniOldNewGamUI.ini