【发布时间】:2015-03-14 10:16:52
【问题描述】:
我正在尝试创建一个批处理文件,该批处理文件将通过删除 INI 文件的特定行(在本例中为 dbside= 行)中的特定 3 个字符串来编辑 ini 文件。基本上如果以下任何字符串: Djg,Msc,Sbf,Zml,Sbi,Sge,Sgs,Ssb,Sus,Srz,Zhp,Zsq,Zsm,Zrg 在 dbside= 行中找到,它将删除它们并保存新的 ini 文件。
到目前为止我有:
setlocal enabledelayedexpansion
@for /f "tokens=2*" %%a in ('REG Query "HKCU\SOFTWARE\Zephyr Associates, Inc." /v StyleDir') do set "StyleDir=%%~b"
@for /f "tokens=2*" %%a in ('REG Query "HKLM\SOFTWARE\Zephyr Associates, Inc." /v StyleDir') do set "StyleDir=%%~b"
@for /f "tokens=2*" %%a in ('REG Query "HKLM\SOFTWARE\Wow6432Node\Zephyr Associates, Inc." /v StyleDir') do set "StyleDir=%%~b"
基本上是询问注册表 ini 文件在哪里,然后我尝试了一些不同的方法来实际修改“%StyleDir%\Style.ini”
非常感谢任何帮助
编辑
所以,我已经有一段时间没有回到这个项目了。好让大家都有,ini文件的前几行是:
[Default]
DataHome=C:\ProgramData\Zephyr\Data
SQLiteHome=c:\programdata\zephyr\data
[DataBaseList]
DbsId=Mng,Fnd,Set,Stl,Isa,Zac,Djg,Msc,Sbf,Zml,Sbi,Sge,Sgs,Ssb,Sus,Srz,Zhp,Zsq,Zsm,Zrg,Zin,Ecn,Ind,Man
CustDbSId=Man
[ZephyrApps]
SAName=Style.exe
AAName=Alloc.exe
SAVersion=8.4.0
我要找的结果是:
[Default]
DataHome=C:\ProgramData\Zephyr\Data
SQLiteHome=c:\programdata\zephyr\data
[DataBaseList]
DbsId=Mng,Fnd,Set,Stl,Isa,Zac,Zin,Ind,Ecn,Man
CustDbSId=Man
[ZephyrApps]
SAName=Style.exe
AAName=Alloc.exe
SAVersion=8.4.0
或者,一种方法可能是使用 Mng,Fnd,Set,Stl,Isa,Zac,Zin,Ind,Ecn + CustDbsID= 中的任何内容重写 DbsID=
到目前为止,我得到的粗略是:
@echo off
for /f "tokens=2*" %%a in ('REG Query "HKCU\SOFTWARE\Zephyr Associates, Inc." /v StyleDir 2^>nul' ) do set "StyleDir=%%~b"
for /f "tokens=2*" %%a in ('REG Query "HKLM\SOFTWARE\Zephyr Associates, Inc." /v StyleDir 2^>nul') do set "StyleDir=%%~b"
for /f "tokens=2*" %%a in ('REG Query "HKLM\SOFTWARE\Wow6432Node\Zephyr Associates, Inc." /v StyleDir 2^>nul') do set "StyleDir=%%~b" 2^>nul
CD %StyleDir%
for /f "tokens=2 delims==" %%a in ('findstr DbsId style.ini') do set DbsId=%%a
echo=%DbsId%
pause
set string=%DbsId%
set string=%DbsId:Djg,= %
set string=%DbsId%
set string=%DbsId:Sbf,= %
set string=%DbsId%
set string=%DbsId:Zml,= %
set string=%DbsId%
set string=%DbsId:Sbi,= %
set string=%DbsId%
set string=%DbsId:Sge,= %
set string=%DbsId%
set string=%DbsId:Sgs,= %
set string=%DbsId%
set string=%DbsId:Ssb,= %
set string=%DbsId%
set string=%DbsId:Sus,= %
set string=%DbsId%
set string=%DbsId:Srz,= %
set string=%DbsId%
set string=%DbsId:Zhp,= %
set string=%DbsId%
set string=%DbsId:Zsq,= %
set string=%DbsId%
set string=%DbsId:Zsm,= %
set string=%DbsId%
set string=%DbsId:Zrg,= %
pause
暂停只是为了看看我是否在做我应该做的事情。这当然是在备份和替换文件之前。
说实话,我对收到的一些答案没有最好的理解,所以我希望这能澄清我正在尝试做的事情。很抱歉之前没有提供大量信息。
【问题讨论】:
标签: string batch-file ini