找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 21072|回复: 10

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

[复制链接]
发表于 2022-11-16 14:58:59 | 显示全部楼层 |阅读模式
【问题描述】

如何在D:\Hisense\MISCMP\HsCMP.ini 文件中
AppServerCount=1
换行追加
multirun=1
 楼主| 发表于 2022-11-16 14:59:22 | 显示全部楼层
【解决方案】

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"
复制代码
发表于 2022-11-16 16:01:40 | 显示全部楼层
本帖最后由 差点就很帅 于 2022-11-16 16:03 编辑

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

评分

参与人数 1技术 +1 收起 理由
ANSL + 1 回复了

查看全部评分

发表于 2022-11-16 19:07:32 | 显示全部楼层
本帖最后由 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技术 +1 收起 理由
差点就很帅 + 1 乐于助人

查看全部评分

 楼主| 发表于 2022-11-17 09:18:33 | 显示全部楼层
回复 3# 差点就很帅


    绝大部分情况下,exit 是多余的。
发表于 2022-11-17 10:24:57 | 显示全部楼层
本帖最后由 qixiaobin0715 于 2022-11-17 10:32 编辑

好像只能判断move命令是否成功执行,对于:
“换行追加
multirun=1”
是否成功则无效,我觉得这才是“差点就很帅”所要的结果。
发表于 2022-11-17 12:00:36 | 显示全部楼层
试试最后加一行findstr ... &&echo,成功||echo,失败
其中省略号请自行填充
发表于 2022-11-17 13:23:14 | 显示全部楼层
一般没这么干的。
如果确实需要显示是否成功,可以在代码开始执行时就判断一下,不符合修改条件就直接跳到最后。
  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
复制代码
发表于 2022-11-17 13:45:04 | 显示全部楼层
假设4楼代码不存在其它问题,那么第2行也是多余的吧。
发表于 2022-11-17 21:25:20 | 显示全部楼层
本帖最后由 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
发表于 2022-11-18 09:46:39 | 显示全部楼层
本帖最后由 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种才会运行所有代码。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 10:32 , Processed in 0.029582 second(s), 12 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表