Board logo

标题: [求助]for语句中 goto和递归问题 [打印本页]

作者: chenai79921     时间: 2007-12-6 20:48    标题: [求助]for语句中 goto和递归问题
有如下文件 11.txt
------------------------------------------------------(分隔符,请忽略)----------------------------
###############服务器信息设值,请勿手动修改#######


# CTI服务器IP
CTIServerIP=172.16.208.444
CTIPort=5001
CTI=0
------------------------------------------------------(分隔符,请忽略)----------------------------

现在我想修改172.16.208.444为172.16.208.18 ,5001修改为1005,其他行不修改,写了如下代码


echo off
for /f "tokens=1,2 delims==" %%a in (11.txt) do (
set front=%%a
set back=%%b
setlocal enabledelayedexpansion
if "!front: =!"=="CTIPort" set back=1005
if "!front: =!"=="CTIServerIP" set back=172.16.208.18
echo/!front!=!back!>>result.txt
endlocal
)pause



运行后发现,没有=号的行,,结尾处都出现了等于号,,然后我修改代码如下

echo off
for /f "tokens=1,2 delims==" %%a in (11.txt) do (
set front=%%a
set back=%%b
setlocal enabledelayedexpansion
if "!front: =!"=="CTIPort" (set back=1005 goto qq)
if "!front: =!"=="CTIServerIP" (set back=172.16.208.18 goto qq)
echo/!front!>>result.txt
goto ww
:qq
echo/!list!=!back!>>result.txt
:ww
endlocal
)
pause


但是只输出了第一行,不明白do()里是怎么循环执行的,,哪位帮忙下,感激不经啊

作者: fastslz     时间: 2007-12-6 21:02
call :ww
call :qq

作者: chenai79921     时间: 2007-12-6 21:16
Originally posted by fastslz at 2007-12-6 09:02 PM:
call :ww
call :qq


不好意思 没明白 能说详细点吗? 谢谢。

作者: fastslz     时间: 2007-12-6 21:46
我是说for里用call才能循环,就你那样,不用这么复杂
@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%a in (11.txt) do (
set "front=%%a"
set "front=!front:444=18!"
set "front=!front:5001=1005!"
>>result.txt echo !front!
)
pause

作者: chenai79921     时间: 2007-12-6 22:05
空白行显示出 “ECHO 处于关闭状态。”

空白行不修改,就让它空白,,怎么修改??

作者: zh159     时间: 2007-12-6 22:12
>>result.txt echo !front!
改为
>>result.txt echo.!front!

作者: chenai79921     时间: 2007-12-6 22:14
虽然显示出来还行,,就是有“ECHO 处于关闭状态。”

但是基本思路还是不行,,实际上我的那个txt里面有许多要0改1,1改0的,
例如 cti=0 css=1所以必须对%%a做判断,然后在修改%%b

作者: chenai79921     时间: 2007-12-6 22:24
------------------------------------------------------(分隔符,请忽略)----------------------------
###############服务器信息设值,请勿手动修改#######


# CTI服务器IP
CTIServerIP=172.16.208.444
CTIPort=5001
CTI=0
CSS=1
OPQ=0
WWW=1
------------------------------------------------------(分隔符,请忽略)----------------------------

前天发了个帖子也是关于这个的。

其实我是想修改172.16.208.444为172.16.208.18 ,5001修改为1005,CTI=1
CSS=0其他行不修改...........

Last edited by chenai79921 on 2007-12-6 at 10:25 PM ]

作者: chenai79921     时间: 2007-12-6 22:28
每次碰到问题 总上来求助 有时候真觉得有点不好意思 啊..呵呵...