我最近一直在玩批处理脚本,我想知道是否有一种方法只能编辑一行单独的批处理文件。我最近一直致力于一个程序,允许我在多个批处理文件之间查看,编辑和交换数据,以便与我和我的朋友一起玩游戏。我在下面提到的是我想出的,但我意识到,当我选择时,让我们说5,作为我的行号,它会保持dirid01.bat中的1-4行(我是想要),第5行将改为我想要的,下面的行将全部删除,所以我只有1-5个操作,其中6-infinity现在不存在。
title Directory Edit
echo.
echo To edit, enter the number of the desired line, then enter it's new value.
echo.
call dirid01.bat
echo.
echo 1 %n% (ID: 01)
echo 2 ! Leader: %leader%
echo 3 ! ! Gamertag: %lgt%
echo 4 ! ! Networth: %lnw%
echo 5 ! Population: %pop%
echo 6 ! ! Real: %rpop%
echo 7 ! ! NPC: %npcpop%
echo 8 ! ! Wolven: %wolfpop%
echo 9 ! Bank Balance: %bankbal%
echo 10 ! ! Treasurer: %btr%
echo 11 ! ! ! Gamertag: %btrgt%
echo 12 ! ! ! Networth: %btrnw%
echo 13 ! ! Location: %bankloc%
echo 14 ! Allies:
echo 15 ! Enemies:
echo.
set /p num=" > "
if %num%==exit goto start
if %num%==escape goto start
if %num%==esc goto start
set /p edit=" New value for %num%: "
if %num%==1 echo set n=%edit% > dirid01.bat
if %num%==2 echo set leader=%edit% >> dirid01.bat
if %num%==3 echo set lgt=%edit% >>> dirid01.bat
if %num%==4 echo set lnw=%edit% >>>> dirid01.bat
if %num%==5 echo set pop=%edit% >>>>> dirid01.bat
if %num%==6 echo set rpop=%edit% >>>>>> dirid01.bat
if %num%==7 echo set npcpop=%edit% >>>>>>> dirid01.bat
if %num%==8 echo set wolfpop=%edit% >>>>>>>> dirid01.bat
if %num%==9 echo set bankbal=%edit% >>>>>>>>> dirid01.bat
if %num%==10 echo set btr=%edit% >>>>>>>>>> dirid01.bat
if %num%==11 echo set btrgt=%edit% >>>>>>>>>>> dirid01.bat
if %num%==12 echo set btrnw=%edit% >>>>>>>>>>>> dirid01.bat
if %num%==13 echo set bankloc=%edit% >>>>>>>>>>>>> dirid01.bat
if %num%==14 echo set n=%edit% >>>>>>>>>>>>>> dirid01.bat
if %num%==15 echo set n=%edit% >>>>>>>>>>>>>>> dirid01.bat
因此,在运行此脚本之前,我的sirid01.bat文件将是:
set n=Artijiet-Union
set leader=Aidan
set lgt=(gamertag)
set lnw=20money
set pop=4000
set rpop=6
set npcpop=3994
set wolfpop=0
set bankbal=1000k
等等。 运行脚本后,将第3行更改为Troller27:
set n=Artijiet-Union
set leader=Aidan
set lgt=Troller27
因此所有其他信息都被删除了。我错了什么?
P.S。感谢您花时间阅读所有这些内容:)
答案 0 :(得分:0)
不确定所有这些重定向器会做什么。
>
表示"创建新文件或替换任何现有文件"
>>
表示"附加到任何现有文件或创建新文件(如果它不存在)
在你的情况下,#14和#15毫无意义,
(
if %num%==1 echo set n=%edit%
if %num%==2 echo set leader=%edit%
if %num%==3 echo set lgt=%edit%
...
)>> dirid01.bat
会在文件中添加一个新行 - 代码块中的任何echo
(带括号的系列行)将被重定向。
因此,如果您的原始目标批处理文件是
set n=Artijiet-Union
set leader=Aidan
set lgt=(gamertag)
...
然后"改变"第3行将文件设置为
set n=Artijiet-Union
set leader=Aidan
set lgt=(gamertag)
...
set lgt=Troller27
因此call
该批处理文件首先将lgt
设置为(gamertag)
,然后设置为Troller27
,最后设置值为"返回"
警告 - 使用(echoes)>>filename
语法,数据中的任何)
都会终止该块,因此无法使用可能包含)
的值} - 使用您的原始方案,但>>
,而不是>
或许多 - >
保存游戏的替代方案
如果您为要保存在游戏中的所有变量名保留#
或@
或$
或_
这样的字符,那么
set #>savefile
将以
格式保存文件中的所有#
个变量
#1=value of #1
#3=value of #3
和
for /f "delims=" %%a in (savefile) do set "%%a"
将恢复所有这些已保存的值。
这样可以轻松添加或删除要保存的值。