向吧里的大神求助!!!
cmd吧
全部回复
仅看楼主
level 1
zkai025 楼主
我有一个文档:
[HostNum]
HostNum = 8
LocalStationID = 50008
[Host1]
StationID = 50008
HostID = 91
HostType = IPS
HostStatus = 1
ServerPort = 5001
IPAddrNum = 2
IPAddr1 = 10.10.24.1
IPAddr2 = 10.9.24.1
Name = 联锁A机
Alias = 联锁A机
HostSimpleName = VPIA
[Host7]
StationID = 50008
HostID = 97
HostType = MMI
ServerPort = 5001
IPAddrNum = 2
IPAddr1 = 10.6.31.57
IPAddr2 = 10.5.31.57
Name = CHMI
Alias = CHMI
HostSimpleName = MMIC
[Host8]
StationID = 50008
HostID = 98
HostType = SM
ServerPort = 5001
IPAddrNum = 2
IPAddr1 = 10.6.24.90
IPAddr2 = 10.5.24.90
Name = 系统维护机
Alias = 系统维护机
HostSimpleName = SDM
我想用CMD的功能将其中 系统维护机的HOSTID =79 改为HOSTID =200,我参考了一些大神的代码,写了下面这一段:
@echo off
@rem 找到系统维护机的HostID,并赋值给 tar
setlocal enabledelayedexpansion
set file=hostcfg.ini
for /f "eol= tokens=* delims=" %%i in ('findstr ".*" "%file%"') do (
set nr=%%i
if "!nr:HostID=!"=="!nr!" (echo 不是目标) else set tar=!nr!
if "!nr:系统维护机=!"=="!nr!" (echo 继续查找) else set tar1=!tar!
)
echo %tar1%
@rem 将文本中的%tar%替换成HostID = 200
for %%i in ("%file%") do set "file=%%~fi"
echo.
set replaced=%tar1%
echo.
set all=HostID = 200
cd.>"%file%_tmp.ini"
setlocal enabledelayedexpansion
for /f "tokens=1* delims=:" %%i in ('findstr /n .* "%file%"') do (
set str=%%j
if not "!str!"=="" set "str=!str:%replaced%=%all%!"
>>"%file%_tmp.ini" echo.!str!
)
move "%file%_tmp.ini" "%file%"
pause
运行以后总是修改得不对,好像是找到的HostID = 79 里的空格或者等号影响了修改过程,求教大神有木有办法解决的?
2015年08月21日 17点08分 1
1