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

[文本处理] 批处理如何读取文本内容赋值给变量?[已解决]

本帖最后由 帝尊 于 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,这个命令是从下往上读取的吧?
可以让他对=号前完全匹配再赋值吗?
这个是只要是前面匹配就会读取=号后面的。

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

TOP

回复 2# idwma


    感谢

TOP

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

TOP

本帖最后由 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"
复制代码

TOP

回复 4# WindCat


    嗯。已经改了。谢谢。

TOP

回复 5# Echo11


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

TOP

返回列表