0

在这里对新手编程有点麻烦。我对 .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 文件或其他文件,那么我将永远感激不尽。我只希望我和我的小圈子能够在我们卑微的社区中分发我们的小模组。

非常感谢您阅读并希望能了解我的困境!我真的很感激任何和所有的帮助。干杯!

4

1 回答 1

0

这里有一些代码应该可以解决问题。不过我还没有测试过它,所以你必须试一试,看看它做了什么——如果有任何异常,然后再报告。只需将Fix.bat文件与两个 INI 文件放在同一个文件夹中,然后从cmd提示符(从文件所在的目录中)运行它。

修复.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

于 2013-02-15T19:25:02.140 回答