当前位置: 首页 > news >正文

bat脚本:将ini文件两行值转json格式

原文件

.ini:目标转换第2行和第三行成下方json

[info]
listKey=key1^key2^key3
listName=A大^B最小^c最好
ccc=1^2^3^
ddd=0^1^9
目标格式

生成同名json文件,并删除原ini文件

[
{
"value":"key1",
"text":"A大"
},
{
"value":"key2",
"text":"B最小"
},
{
"value":"key3",
"text":"c最好"
}
]
bat最终实现

最需要注意的问题就是原来ini文件的格式,bat文件要保持一致,不然输入汉字程序就执行错误,源文件汉字还会乱码。

@echo off
setlocal ENABLEDELAYEDEXPANSION
chcp 65001
set path=%cd%
set currow=1
:loop
for /r "%path%" %%i in (*.ini) do (set filename=%%~niif "!filename!"=="" pauseecho [>!filename!.jsongoto fileHandler
)
:fileHandler
for /f "skip=%currow% tokens=2 delims==" %%a in (!filename!.ini) do (set /a num+=1echo !currow!if defined remain (echo !remain! --end) else if !currow!==1 (set remain=%%a)if defined remain1 (echo !remain1! --end) else if !currow!==2 (set remain1=%%a)if !currow!==1 goto keyHandlerif !currow!==2 goto nameHandler
)
:keyHandler    
echo {>>!filename!.json
for /f "tokens=1* delims=^" %%b in ("%remain%") do (echo "value":"%%b",>>!filename!.jsonset currow=2set remain=%%c
)
if defined remain1 (goto nameHandler) else (goto fileHandler)  :nameHandlerfor /f "tokens=1* delims=^" %%d in ("%remain1%") do (echo "text":"%%d">>!filename!.jsonset currow=1set remain1=%%e)
if "!remain!"=="" (echo }>>!filename!.json) else (echo },>>!filename!.json)
if defined remain1 goto fileHandler
echo ]>>!filename!.json
del /f /p !filename!.json
set filename=""
set num=0
set remain=
goto loop
  • %cd% 当前目录路径
  • echo 文字>xxx.txt >覆盖输入, >> 追加输入
  • chcp 65001 utf-8
  • set filename=%%~ni%%~ni文件名 %%~xi文件后缀名,还有很多,用到什么可以查。
  • if else 不能换行,执行语句加()
  • 执行完一个文件变量值恢复一下,不然下一个文件会出错
  • 当前代码在中文文件名会出错,没法转换。

重点说明
for /f "skip=%currow% tokens=2 delims==" %%a in (!filename!.ini)
for /f "tokens=1* delims=^" %%b in ("%remain%")

  1. for /f 语句是用来逐行读取文件的。
  2. skip=%currow% 从第几行开始读取。
  3. delims=^ 按照^将每行拆分,可以写其他符号,也可以写多个符号或者字符。
  4. tokens 上面拆分的结果当作一个数组,如果直接写数字就是取每行第几个,*代表所有,1*第一个和其他,作用就是循环里 %%b %%c就是对应的值。上面就是每次取第一个输出,后面的放到变量里,进入下一行同样操作,这样能让json一个{}里放两行对应的内容。
  5. 后面(!filename!.ini)("%remain%")读取文件和字符串,也可以(‘type !filename!.ini|findstr string’)这种格式。
http://www.lryc.cn/news/274306.html

相关文章:

  • scratch绘制小正方形 2023年12月中国电子学会图形化编程 少儿编程 scratch编程等级考试四级真题和答案解析
  • 【产品应用】一体化伺服电机在管道检测机器人中的应用
  • Django在urls.py利用函数path()配置路由时传递参数给调用的视图函数的方法
  • Ubuntu20 编译 Android 12源码
  • RFID传感器|识读器CNS-RFID-01/1S在AGV小车|搬运机器人领域的安装与配置方法
  • 用友U8 Cloud smartweb2.RPC.d XML外部实体注入漏洞
  • 220.【2023年华为OD机试真题(C卷)】考勤信息(滑动窗口算法-JavaPythonC++JS实现)
  • 2024最新SLAM实习、秋招面经(百度、华为、小米、蔚来、理想、美团、阿里菜鸟……)
  • Html5实用个人博客留言板模板源码
  • 解码 Elasticsearch 查询 DSL:利用 Elasticsearch 中的 has_child 和 has_parent 查询进行父子文档搜索
  • 架构(1)
  • 第8课 将推流端与播放端合并为一对一音视频聊天功能
  • 如何保障集团下达的政策要求有效落地
  • 霍尔传感器测速测距实验——STM32驱动(课程设计)
  • 数据库——SQL注入攻击
  • 【已解决】js定义对象属性是.如何访问
  • Linux入门攻坚——11、Linux网络属性配置相关知识1
  • 51单片机定时/计数器相关知识点
  • 机器视觉兄弟们,没有项目订单,机器视觉项目行业难题来了
  • 机器人开发--动力系统
  • 51单片机四位数码管计算器 Proteus仿真程序
  • 问题 B: 分牌
  • 3元一平方公里的在线卫星影像
  • 只会用 xxl-job?更强大的新一代分布式任务调度框架来了!
  • LeetCode-无重复字符的最长子串(3)
  • 【C#】知识点实践序列之Lock简单解决并发引起数据重复问题
  • NLP基础——TF-IDF
  • kubernetes(四)
  • 安科瑞变电站综合自动化系统在青岛海洋科技园应用——安科瑞 顾烊宇
  • 紫光展锐5G扬帆出海 | 欧洲积极拥抱更多5G选择