Board logo

标题: [文本处理] 新手报到,求教INI文件如何通过批处理在指定文职增添内容 [打印本页]

作者: liangxinyi    时间: 2019-6-5 12:01     标题: 新手报到,求教INI文件如何通过批处理在指定文职增添内容

本帖最后由 liangxinyi 于 2019-6-5 17:12 编辑

各位老师:
单位有一批客户端运行依赖  chis.ini配置文件
目录:D:\NEW\DEPT
文件内容大致分以下[CHIS] \ [Server] \ [Input_window_control]等节点
现需要在【CHIS】节点下补充下面两行(不是开头)
;单位标识
HospitalFlag_tafy=1”

请问如何在原配置参数不动情况下通过批处理增加上述内容
谢谢


chis.ini 文档内容如下

[Chis]
//本子系统名称
SubSys=dept_chg
subsys_name=医技管理程序
//医技科室编码使用医剂子系统的科室编码(zd_unit_code.pc_flag='1')
dept_code =4010000
;1120100
;2160100
//对应药房编码
group_no=204001
//大输液药房
yp_dsy =201001
//跨科确认时,可以确认的科室列表
confirm_other_dept_list =


[Server]
AppServer=10.10.10.101
172.30.0.22
LoginServer=10.10.10.101
172.30.0.22


[Input_window_control]
code_TabStop=1
edtName_TabStop=1
age_TabStop=0
sex_TabStop=0
ChargeType_TabStop=0
作者: zaqmlp    时间: 2019-6-5 12:38

  1. @echo off
  2. set info=互助互利,支付宝扫码头像,感谢赞助
  3. rem 有问题,可加QQ956535081及时沟通
  4. title %info%
  5. cd /d "%~dp0"
  6. set "inifile=D:\NEW\DEPT\chis.ini"
  7. if not exist "%inifile%" (echo;"%inifile%" not found&pause&exit)
  8. (for /f "tokens=1* delims=:" %%a in ('type "%inifile%"^|findstr /n .*') do (
  9.     if /i "%%b" equ "[Chis]" (
  10.         echo,[Chis]
  11.         echo,;单位标识
  12.         echo,HospitalFlag_tafy=1
  13.     ) else echo;%%b
  14. ))>"#.tmp"
  15. move /y "#.tmp" "%inifile%"
  16. echo;%info%
  17. pause
复制代码

作者: liangxinyi    时间: 2019-6-5 14:19

本帖最后由 liangxinyi 于 2019-6-5 14:26 编辑

回复 2# zaqmlp


人人为我,我为人人o(* ̄︶ ̄*)o
测试通过了但插入位置不对。
求教如果我指定必须插入;[update]前,或者节点【server】前,怎么弄?
作者: zaqmlp    时间: 2019-6-5 15:39

回复 3# liangxinyi

没赞助没动力呀
作者: cfwyy77_bat    时间: 2019-6-5 15:40

这种还是sed省事。
  1. sed -i '/\[Chis\]/a\单位标识\nHospitalFlag_tafy=1”' chis.ini
复制代码
-i 参数会直接在原文件更改,注意备份原文件。
windows下运行sed的方法建议自行了解。
作者: Batcher    时间: 2019-6-5 21:20

指定必须插入[server]前.bat
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. cd /d "%~dp0"
  4. set "inifile=D:\NEW\DEPT\chis.ini"
  5. for /f "tokens=1* delims=:" %%a in ('type "%inifile%" ^| findstr /n .*') do (
  6.     if /i "%%b" equ "[Server]" (
  7.         set "Position=%%a"
  8.         set /a Previous=Position-1
  9.         goto :Insert
  10.     )
  11. )
  12. goto :end
  13. :Insert
  14. (for /f "tokens=1* delims=:" %%a in ('type "%inifile%" ^| findstr /n .*') do (
  15.     if "%%a" equ "!Previous!" (
  16.         echo ;单位标识
  17.         echo HospitalFlag_tafy=1
  18.     )
  19.     echo,%%b
  20. ))>"%inifile%.txt"
  21. move /y "%inifile%.txt" "%inifile%"
  22. :end
  23. pause
复制代码

作者: liangxinyi    时间: 2019-6-6 10:38

回复 6# Batcher
感谢版主支持,自己也学习了一下,目前弄懂了,谢谢




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2