Board logo

标题: [文本处理] 批处理如何读取文本内容赋值给变量?[已解决] [打印本页]

作者: 帝尊    时间: 2022-9-14 18:07     标题: 批处理如何读取文本内容赋值给变量?[已解决]

本帖最后由 帝尊 于 2022-9-15 20:28 编辑
  1. for /f "tokens=2 delims==" %%i in ('find "%Name%" "Config.ini"') do (
  2.     Set Value=%%i
  3. )
复制代码
这个可以正常使用,但是有一个瑕疵。
当config.ini文件内容是
DISK=NAME
DISKUP=GAME
这样的时候。当你输入DISK获取到的是GAME,这个命令是从下往上读取的吧?
可以让他对=号前完全匹配再赋值吗?
这个是只要是前面匹配就会读取=号后面的。
作者: idwma    时间: 2022-9-14 19:07

  1. for /f "tokens=2 delims==" %%i in ('find "%Name%=" "Config.ini"') do (
  2.     Set Value=%%i
  3. )
复制代码

作者: 帝尊    时间: 2022-9-14 19:35

回复 2# idwma


    感谢
作者: WindCat    时间: 2022-9-14 23:38

  1. for /f "tokens=1-2 delims==" %%a in (1.ini) do (
  2. if /i "%%a"=="test" set /a "test=%%b"
  3. )
复制代码
可以考虑我的这个写法,行数多的情况(大于100的情况下提升效率可以考虑加入计数引入数组变量或者按顺序读取等方案
作者: Echo11    时间: 2022-9-15 08:14

本帖最后由 Echo11 于 2022-9-15 08:52 编辑

回复 1# 帝尊


这样的时候。当你输入DISK获取到的是GAME,这个命令是从下往上读取的吧?

不是从下往上,是从上往下,匹配到两次,第二次的把第一次覆盖了。

区分大小写匹配DISK
  1. for /f "tokens=1,2 delims==" %%i in (Config.ini) do IF "%%i"=="%Name%" Set "Value=%%j"
复制代码
不区分大小写匹配DISK
  1. for /f "tokens=1,2 delims==" %%i in (Config.ini) do IF /i "%%i"=="%Name%" Set "Value=%%j"
复制代码

作者: 帝尊    时间: 2022-9-15 20:29

回复 4# WindCat


    嗯。已经改了。谢谢。
作者: 帝尊    时间: 2022-9-15 20:29

回复 5# Echo11


    已改为不判断大小写了。谢谢




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