[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 【已解决】如何将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配置文件的作用
这么做可以让不熟悉批处理的的人,也可以简单配置

for /f "delims=" %%a in ('type "a.txt"') do set %%a
echo;%P1%

TOP

回复 2# pcl_test


    感谢回复,但是还有问题:
这个txt中除了???=???这种格式外,还会有其他无用信息,如一行内只有“星际争霸” 或者 “超级玛丽”    ……诸如此类纯备注类文本
    这时候用set “星际争霸”,就会提示“环境变量 星际争霸 没有定义”
    所以,我感觉应该是这种逻辑:
   1.搜索txt中,有P1、P2……的行,整行提取作为临时变量1
   2.提取 临时变量1 中的需要字符(如过滤“等) 赋值给批处理变量

虽然思路有,但是自己尝试没成功。望解惑

TOP

  1. for /f "tokens=1*delims==" %%i in ('type b.txt^|findstr /i "^P[0-9][0-9]*=\".*\"$"') do set "x%%i=%%~j"
  2. set xP
  3. pause
复制代码

TOP

本帖最后由 pcl_test 于 2016-1-16 01:39 编辑

回复 3# q121212
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%a in ('more +9 "%~f0"') do (
  3.     set "#%%a" 2>nul||(set/an+=1&set "#备注!n!=%%a")
  4. )
  5. echo;%#dir%
  6. echo;%#bool%
  7. echo;%#备注1%
  8. echo;%#备注2%
  9. pause&exit
  10. dir=D:\Games
  11. 什么鬼!?
  12. bool=yes
  13. 自己玩吧
复制代码

TOP

  1. @echo off
  2. for /f "tokens=1-2 delims==" %%a in ('findstr "=" 123.txt') do set x%%a=%%~b
  3. set x
  4. pause
复制代码

TOP

回复 4# WHY


    不好意思来晚了,验证了,没问题,findstr筛选文本再进行set赋值,感谢!

TOP

回复 5# pcl_test


    ....神啊,代码我看不懂....  感谢还是

TOP

回复 6# flyinnet9


    感谢!

TOP

回复 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

批处理蛮有意思
感谢各位一路支持

TOP

返回列表