[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] [分享]批处理在ini文件指定字符串的行下面增加一行

【问题描述】

如何在D:\Hisense\MISCMP\HsCMP.ini 文件中
AppServerCount=1
换行追加
multirun=1
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

【解决方案】

test_1.bat 请参考Q-04把bat文件保存为ANSI编码:
https://mp.weixin.qq.com/s/Koje4FufWxWBs7ioDy_LJA
  1. @echo off
  2. (for /f "tokens=1* delims=:" %%i in ('type "D:\Hisense\MISCMP\HsCMP.ini" ^| findstr /n .*') do (
  3.     echo,%%j
  4.     if "%%j" equ "AppServerCount=1" (
  5.         echo multirun=1
  6.     )
  7. ))>"%temp%\HsCMP.ini"
  8. move /y "%temp%\HsCMP.ini" "D:\Hisense\MISCMP\"
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本帖最后由 差点就很帅 于 2022-11-16 16:03 编辑

感谢老大的指点,刚才测试成功。
我在后面增加了pause & exit
这样可以显示是否执行了,不过里面显示为移动了一个文件,怎么显示修改成功 按任意键继续?
1

评分人数

    • ANSL: 回复了技术 + 1

TOP

本帖最后由 ANSL 于 2022-11-16 19:09 编辑

回复 3# 差点就很帅
加个功能
  1. @echo off
  2. set errorlevel=0
  3. (for /f "tokens=1* delims=:" %%i in ('type "D:\Hisense\MISCMP\HsCMP.ini" ^| findstr /n .*') do (
  4.     echo,%%j
  5.     if "%%j" equ "AppServerCount=1" (
  6.         echo multirun=1
  7.     )
  8. ))>"%temp%\HsCMP.ini"
  9. move /y "%temp%\HsCMP.ini" "D:\Hisense\MISCMP\"
  10. rem 判断是否执行成功
  11. if "%errorlevel%"=="1" echo 操作失败请按任意键继续....
  12. if "%errorlevel%"=="0" echo 操作完成请按任意键继续....
  13. pause>nul
  14. exit
复制代码
1

评分人数

本人已死,不用联系,要联系下来联系~

TOP

回复 3# 差点就很帅


    绝大部分情况下,exit 是多余的。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本帖最后由 qixiaobin0715 于 2022-11-17 10:32 编辑

好像只能判断move命令是否成功执行,对于:
“换行追加
multirun=1”
是否成功则无效,我觉得这才是“差点就很帅”所要的结果。

TOP

试试最后加一行findstr ... &&echo,成功||echo,失败
其中省略号请自行填充

TOP

一般没这么干的。
如果确实需要显示是否成功,可以在代码开始执行时就判断一下,不符合修改条件就直接跳到最后。
  1. @echo off
  2. findstr /x "AppServerCount=1" D:\Hisense\MISCMP\HsCMP.ini>nul 2>nul
  3. if errorlevel 1 (
  4.     echo 操作失败&goto :a
  5. ) else (
  6.     echo 操作成功
  7. )
  8. ...
  9. :a
  10. pause
复制代码

TOP

假设4楼代码不存在其它问题,那么第2行也是多余的吧。

TOP

本帖最后由 terse 于 2022-11-17 21:36 编辑
假设4楼代码不存在其它问题,那么第2行也是多余的吧。
qixiaobin0715 发表于 2022-11-17 13:45

4楼第2行应该是判断有没有添加成功所设置的条件

看花了  原以为前面设置一个值 中间符合条件了再重新定义的 结果没有
假如第二行 set err=0
echo multirun=1那里 set err=1
然后后面再根据err的值判断是不是执行MOVE

TOP

本帖最后由 qixiaobin0715 于 2022-11-18 09:48 编辑

每个代码都是有条件的,顶楼已经把环境说的很清楚了。
a.必须存在D:\Hisense\MISCMP\HsCMP.ini 文件;
b.文件中必须有1行为AppServerCount=1
满足上述2个条件,才能成立且无需判断是否成功。
如果非要较真不可,可以分为3情况:
1.不存在指定的ini文件。只是临时目录中生成一个空的文件HsCMP.ini。
2.存在指定的ini文件,但文件中没有“AppServerCount=1”这一行字符。会在临时目录中生成与指定文件一模一样的副本文件HsCMP.ini,然后移动到指定目录覆盖原有的文件HsCMP.ini。
3.满足上面a、b 2个条件,会在临时目录中生成修改后的文件副本,然后覆盖原文件。
第2种情况无实际意义,多此一举;第1种情况更不用说,会报错。所以8楼代码在前2种情况下,直接就跳到代码的最后面,只有满足第3种才会运行所有代码。

TOP

返回列表