Board logo

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

作者: chenai79921     时间: 2007-12-6 20:48    标题: [求助]for语句中 goto和递归问题

有如下文件 11.txt
------------------------------------------------------(分隔符,请忽略)----------------------------
###############服务器信息设值,请勿手动修改#######
                        
[ServerInfo]                                
# 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


  Quote:
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
------------------------------------------------------(分隔符,请忽略)----------------------------
###############服务器信息设值,请勿手动修改#######
                        
[ServerInfo]                                
# 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
每次碰到问题 总上来求助 有时候真觉得有点不好意思 啊..呵呵...