标题: [文本处理] 批处理读取INI的问题 [打印本页]
作者: clock874 时间: 2021-3-4 11:45 标题: 批处理读取INI的问题
搜索了一下,好像是不同小节下相同键值的不能读取。比如我的ini是这样的:
[1]
pcname=PC-001
ip=192.168.1.101
zw=255.255.255.0
wg=192.168.1.1
dns1=8.8.8.8
dns2=4.4.4.4
[2]
pcname=PC-002
ip=192.168.1.102
zw=255.255.255.0
wg=192.168.1.1
dns1=8.8.8.8
dns2=4.4.4.4
[3]
pcname=PC-003
ip=192.168.1.103
zw=255.255.255.0
wg=192.168.1.1
dns1=8.8.8.8
dns2=4.4.4.4
我要读取3小节下面的pcname键值,是要怎么写?
作者: 路过 时间: 2021-3-4 12:17
- @echo off
- setlocal enabledelayedexpansion
- set f3=0
- for /f "dellims=" %%a in (1.ini) do (
- set f0=%%a
- set f2=!f0:~0,2!
- if !f3!==1 (set %%a)
- if "!f2!"=="[3" (
- set f3=1
- ) else (
- set f1=!f0:~0,1!
- if "!f1!"=="[" (set f3=0)
- )
- )
- echo;%pcname%
- pause
- exit
复制代码
作者: clock874 时间: 2021-3-4 12:46
回复 2# 路过
感谢回复!
实际运行中有点儿问题,比如我ini里面有300个小节的话,两位数的小节不能识别,而且1小节和11小节和111小节会不会有错误?
作者: qixiaobin0715 时间: 2021-3-4 13:27
- @echo off
- setlocal enabledelayedexpansion
- for /f "delims=" %%a in (1.ini) do (
- if "%%a"=="[3]" (
- set n=true
- ) else if !n!==true (
- set str=%%a
- echo !str:~-6!
- goto :o
- )
- )
- :o
- pause
- exit
复制代码
作者: clock874 时间: 2021-3-4 13:48
回复 4# qixiaobin0715
感谢回复,实际运行中,能正常读取到pcname,但是怎么读ip和zw之类的?
作者: qixiaobin0715 时间: 2021-3-4 15:19
请一次把话说完:- @echo off
- setlocal enabledelayedexpansion
- for /f "tokens=1,2 delims==" %%a in (1.ini) do (
- if "%%a"=="[3]" (
- set n=true
- ) else if !n!==true (
- if "%%a"=="[4]" goto :o
- echo,%%b
- )
- )
- :o
- pause
- exit
复制代码
作者: xczxczxcz 时间: 2021-3-4 15:24
保存为 xxx.ps1 右键运行- $file="$(gl)\a.txt"; #加载文件
- $id=1; #[数字]
- $r='0.0.0.0'; #替换内容
- $name='ip'; #替换标识
- [regex]::Replace([IO.File]::ReadAllText($file,[Text.Encoding]::Default),
- "(?ism)(?<=\[$id].*?$name=)(?:[^`r`n]+)",$r)|sc '.\new.log';
- &cmd /c pause;
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |