基本上:
第一次在这里发布海报......我不仅在搜索 SO,而且在整个互联网上搜索过去 2 天的答案。我想要一个在卸载期间运行的批处理文件(.bat),打开一个配置(.cfg)文件,找到一个条目并将其删除,然后完成卸载。
到目前为止我所拥有的:
我有一个运行批处理文件以将条目添加到配置文件中的安装程序:
[Area.01]
Title=Unique to entry
Location=Unique to entry
Active=Required but in all entries
Layer=Required with Unique Number
Required=Required but in all entries
[Area.02]
Title=Unique to entry
Location=Unique to entry
Active=Required but in all entries
Layer=Required with Unique Number
Required=Required but in all entries
我让安装批处理文件扫描配置并添加下一个条目号、条目的内容和保存条目索引的 REGISTRY 键;所以从逻辑上讲,下一个条目是[Area.03]
. 但是,此文件包含 100 多个条目。
我想要的是批处理文件读取它所做的注册表条目,找到它所做的条目,然后删除整个条目,这就是我在这里的原因。这是我到目前为止所拥有的:
@echo off
REG QUERY "HKLM\SOFTWARE\Name of File" /v SceneryCFGPath
IF ERRORLEVEL 1 GOTO ERROR1
FOR /F "tokens=3 skip=2" %%i IN ('REG QUERY "HKLM\SOFTWARE\Name of File" /v SceneryCFGPath') DO SET VAR1=%%i
CD "%VAR1%"
REG QUERY "HKLM\SOFTWARE\Name of File" /v SceneryIndex
IF ERRORLEVEL 1 GOTO ERROR2
FOR /F "tokens=3 skip=2" %%i IN ('REG QUERY "HKLM\SOFTWARE\Name of File" /v SceneryIndex') DO SET VAR2=%%i
TYPE scenery.cfg | FINDSTR /V Area.%VAR2%
REG DELETE "HKLM\SOFTWARE\Name of File" /F
GOTO END
:ERROR1
ECHO There was an Error while changing to Directory "%VAR1%"...
PAUSE
GOTO ERROR2
:ERROR2
ECHO There was an Error while unregistering from Scenery Library ! Please delete the Area manually...
PAUSE
GOTO END
:END
del "%~f0"
使用时,FINDSTR
它成功找到了条目,但只删除了第一行:[Area.03]
. 我需要它做的是删除该条目和该条目的其他部分。
当我尝试在 FINDSTR 中包含其他条目时:
TYPE scenery.cfg | FINDSTR /V /N Area.%VAR2% | Title | Active | Layer | Required
它会删除每个条目的所有这些行。
我真的更喜欢这是一个批处理文件,因为它可以在 Windows XP、Vista 和 7、32 和 64 位系统上运行。 由于这些特定的 Windows 系统都具有CMD.EXE,因此不需要任何额外的库或程序。
除了删除配置文件中的整个条目外,我的一切工作正常。我希望我没有混淆任何人,但任何帮助将不胜感激!
斯文2157