返回列表 发帖
回复 1# 670422423

请参考Q-04和Q-05把bat文件和ini文件都保存为ANSI编码:
https://mp.weixin.qq.com/s/Koje4FufWxWBs7ioDy_LJA

不保留空行.bat
@echo off
cd /d "%~dp0"
setlocal enabledelayedexpansion
set "FileOld=1.ini"
set "FileNew=2.ini"
set "BeginChange="
(for /f "tokens=1,2 delims==" %%a in ('type "%FileOld%"') do (
    if "%%b" equ "" (
        set "ThisRow=%%a"
    ) else (
        set "ThisRow=%%a=%%b"
    )
    if "%%a" equ "[SERVER_DATA_2]" (
        echo,!ThisRow!
        set "BeginChange=true"
    ) else if "!BeginChange!" equ "true" (
        if "%%a" equ "SERVER_USER" (
            echo,%%a=bbs.bathome.net
            set "ChangeU=true"
        ) else if "%%a" equ "SERVER_PASSWORD" (
            echo,%%a=www.bathome.net
            set "ChangeP=true"
        ) else (
            echo,!ThisRow!
        )
        if "!ChangeU!" equ "true" (
            if "!ChangeP!" equ "true" (
                set "BeginChange=false"
            )
        )
    ) else (
        echo,!ThisRow!
    )
))>"%FileNew%"COPY
保留空行.bat
@echo off
cd /d "%~dp0"
setlocal enabledelayedexpansion
set "FileOld=1.ini"
set "FileNew=2.ini"
set "BeginChange="
(for /f "tokens=1,2 delims=:" %%i in ('findstr /n .* "%FileOld%"') do (
    if "%%j" equ "" (
        echo,
    ) else (
        for /f "tokens=1,2 delims==" %%a in ("%%j") do (
            if "%%b" equ "" (
                set "ThisRow=%%a"
            ) else (
                set "ThisRow=%%a=%%b"
            )
            if "%%a" equ "[SERVER_DATA_2]" (
                echo,!ThisRow!
                set "BeginChange=true"
            ) else if "!BeginChange!" equ "true" (
                if "%%a" equ "SERVER_USER" (
                    echo,%%a=bbs.bathome.net
                    set "ChangeU=true"
                ) else if "%%a" equ "SERVER_PASSWORD" (
                    echo,%%a=www.bathome.net
                    set "ChangeP=true"
                ) else (
                    echo,!ThisRow!
                )
                if "!ChangeU!" equ "true" (
                    if "!ChangeP!" equ "true" (
                        set "BeginChange=false"
                    )
                )
            ) else (
                echo,!ThisRow!
            )
        )
    )
))>"%FileNew%"COPY
批处理读取ini文件内容并修改指定的值
http://bbs.bathome.net/thread-30373-1-1.html

批处理读取ini文件指定小节的内容
http://bbs.bathome.net/thread-57942-1-1.html
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 5# 670422423


最后加一行:
move /y "%FileNew%" "%FileOld%"COPY
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 10# wh7288


这代码是不行的。
1、不同的节点下面可能存在相同的用户名和密码
2、不能在代码里面把用户名和密码写死
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 14# wh7288


if "!str!" equ "SERVER_USER=456" (
不应该像这样使用【老用户名】作为判断条件
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 14# wh7288


这个场景下n+1写起来会比较麻烦(不是说完全不行),因为待修改的[SERVER_DATA_2]不一定出现在第几节。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 6# 670422423


    3楼第2段代码可以保留空行
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 20# 670422423


正常来说,没有这样的问题。
请再次仔细检查你的真实路径和写在代码里面的路径是否一样。

比如文件在D:\Program Files (x86)\program\123.ini
然后把set "FileOld=123.ini"改为"FileOld=D:\Program Files (x86)\123.ini" 会报错 提示“系统找不到文件 \Program Files (x86)\123.ini"。”

你给的这个例子明显不一致。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表