标题: [文本处理] 【已解决】如何将txt文件的行内容转换成相应的批处理变量 [打印本页]
作者: q121212 时间: 2016-1-11 00:52 标题: 【已解决】如何将txt文件的行内容转换成相应的批处理变量
本帖最后由 q121212 于 2016-1-16 11:04 编辑
123.txt内容:
P1="11"
P2="23"
P3="D:\Games"
P4="Yes"
要在批处理中,获取123.txt 中对应变量,并赋值给批处理中的变量:xP1、xP2……
xP1=11
xP2=23
xP3=D:\Games
xP4=Yes
这里的txt类似ini配置文件的作用
这么做可以让不熟悉批处理的的人,也可以简单配置
作者: pcl_test 时间: 2016-1-11 01:18
for /f "delims=" %%a in ('type "a.txt"') do set %%a
echo;%P1%
作者: q121212 时间: 2016-1-11 12:42
回复 2# pcl_test
感谢回复,但是还有问题:
这个txt中除了???=???这种格式外,还会有其他无用信息,如一行内只有“星际争霸” 或者 “超级玛丽” ……诸如此类纯备注类文本
这时候用set “星际争霸”,就会提示“环境变量 星际争霸 没有定义”
所以,我感觉应该是这种逻辑:
1.搜索txt中,有P1、P2……的行,整行提取作为临时变量1
2.提取 临时变量1 中的需要字符(如过滤“等) 赋值给批处理变量
虽然思路有,但是自己尝试没成功。望解惑
作者: WHY 时间: 2016-1-11 12:54
- for /f "tokens=1*delims==" %%i in ('type b.txt^|findstr /i "^P[0-9][0-9]*=\".*\"$"') do set "x%%i=%%~j"
- set xP
- pause
复制代码
作者: pcl_test 时间: 2016-1-11 12:57
本帖最后由 pcl_test 于 2016-1-16 01:39 编辑
回复 3# q121212 - @echo off&setlocal enabledelayedexpansion
- for /f "delims=" %%a in ('more +9 "%~f0"') do (
- set "#%%a" 2>nul||(set/an+=1&set "#备注!n!=%%a")
- )
- echo;%#dir%
- echo;%#bool%
- echo;%#备注1%
- echo;%#备注2%
- pause&exit
- dir=D:\Games
- 什么鬼!?
- bool=yes
- 自己玩吧
复制代码
作者: flyinnet9 时间: 2016-1-12 11:38
- @echo off
- for /f "tokens=1-2 delims==" %%a in ('findstr "=" 123.txt') do set x%%a=%%~b
- set x
- pause
复制代码
作者: q121212 时间: 2016-1-16 10:41
回复 4# WHY
不好意思来晚了,验证了,没问题,findstr筛选文本再进行set赋值,感谢!
作者: q121212 时间: 2016-1-16 10:46
回复 5# pcl_test
....神啊,代码我看不懂.... 感谢还是
作者: q121212 时间: 2016-1-16 11:01
回复 6# flyinnet9
感谢!
作者: q121212 时间: 2016-1-16 11:03
回复 4# WHY
我最近有在看set,然后自己也理出来一个思路:
@echo off&setlocal enabledelayedexpansion
for /f %%i in ('findstr /i "^P[0-9]=.*" "123.txt"'
) do (
set tem1=%%i
set tem2=!tem1:^"=!
set x!tem2!
)
echo %xP1%
echo %xP2%
echo %xP3%
echo %xP4%
pause
批处理蛮有意思
感谢各位一路支持
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |