dos下怎么读INI文件【已解决】
[i=s] 本帖最后由 redapple2021 于 2021-4-28 08:51 编辑 [/i]
DOS命令行下稳定速度之快是大家共知,所以想请叫一下怎么读配置文件,就犹如AU3一样,把读取的内容做变一个变量,让其他代码挪用。
redapple2021 发表于 2021-4-26 08:40
BAT 读取ini配置文件方式dos
ini文件实例。
bat去读取ini文件时,咱们假设:
文件只有一个section,而且section的头在第一行,这间不会有空格。我们可以在读取时先掠过第一行,直接读取数。
config.ini文件内容如下:
[Common]
ITEM1=ITEM_1
ITEM2=ITEM_2
ITEM3=ITEM_3
读取ini文件我们写成一个BAT文件,这样在其它BAT中都可以挪用。
readconfig.bat
CALL :readconfig %1 %2
:readconfig
  for /f "skip=1 tokens=1,2 delims==" %%a IN (jvz.ini) Do if %1==%%a set %2=%%b & @echo readconfig get %%a, value is %%b
  goto :eof
调历时的方法:
CALL readconfig ITEM1 ITEM1_VALUE
ECHO %ITEM1_VALUE%
有无人能解释一下了?
lanfengc 发表于 2021-4-26 13:16
我给你解释下关键这条命令。
for /f "skip=1 tokens=1,2 delims==" %%a IN (jvz.ini) Do if %1==%%a set %2=%%b & @echo readconfig get %%a, value is %%b
解释如下:
1.for 命令格式
        对一组文件中的每一个文件执行某个特定命令。
        FOR %variable IN (set) DO command [command-parameters]
          %variable  指定一个单一字母可替换的参数。
          (set)      指定一个或一组文件。可以利用通配符。
          command    指定对每一个文件执行的命令。
          command-parameters
                                 为特定命令指定参数或命令行开关。
        在批处置程序中使用 FOR 命令时,指定变量请使用 %%variable
        而不要用 %variable。变量名称是区分大小写的,所以 %i 不同于 %I.
        若是命令扩展被启用,下列额外的 FOR 命令格式会受到
        支持:
        FOR /D %variable IN (set) DO command [command-parameters]
                如果集中包括通配符,则指定与目录名匹配,而不与文件
                名匹配。
        FOR /R [[drive:]path] %variable IN (set) DO command [command-parameters]
                检查以 [drive:]path 为根的目录树,指向每个目录中的
                FOR 语句。如果在 /R 后没有指定目录,则使用当前
                目录。如果集仅为一个单点(.)字符,则列举该目录树。
        FOR /L %variable IN (start,step,end) DO command [command-parameters]
                该集表示以增量形式从开始到结束的一个数字序列。
                因此,(1,1,5) 将产生序列 1 2 3 4 5,(5,-1,1) 将产生
                序列 (5 4 3 2 1)。
        FOR /F ["options"] %variable IN (file-set) DO command [command-parameters]
        FOR /F ["options"] %variable IN ("string") DO command [command-parameters]
        FOR /F ["options"] %variable IN ('command') DO command [command-parameters]
                或,如果有 usebackq 选项:
        FOR /F ["options"] %variable IN (file-set) DO command [command-parameters]
        FOR /F ["options"] %variable IN ("string") DO command [command-parameters]
        FOR /F ["options"] %variable IN ('command') DO command [command-parameters]
                filenameset 为一个或多个文件名。继续到 filenameset 中的
          下一个文件之前,每份文件都已被打开、读取并通过处理。
                处理包括读取文件,将其分成一行行的文字,然后将每行
                解析成零或更多的符号。然后用已到的符号字符串变量值
                挪用 For 循环。以默许方式,/F 通过每个文件的每一行中分开
                的第一个空白符号。跳过空白行。您可通过指定可选 "options"
                参数替代默认解析操作。这个带引号的字符串包括一个或多个
                指定不同解析选项的关键字。这些关键字为:
批处理文件怎么做
                        eol=c           - 指一个行注释字符的结尾(就一个)
                        skip=n          - 指在文件开始时忽略的行数。
                        delims=xxx      - 指分隔符集。这个替换了空格和跳格键的
                                                          默认分隔符集。
                        tokens=x,y,m-n  - 指每行的哪个符号被传递到每个迭代
                                                          的 for 本身。这会致使额外变量名称的分派。m-n
                                                          格式为一个范围。通过 nth 符号指定 mth。如果
                                                          符号字符串中的最后一个字符星号,
                                                          那么额外的变量将在最后一个符号解析以后
                                                          分配并接受行的保留文本。
                        usebackq        - 指定新语法已在下类情况中使用:                   
                                                          在作为命令执行一个后引号的字符串而且一个单
                                                          引号字符为文字字符串命令并允许在 filenameset
                                                          中使用双引号扩起文件名称。
                某些范例可能有助:
        FOR /F "eol=; tokens=2,3* delims=, " %i in () do @echo %i %j %k
                会分析 中的每一行,忽略以分号打头的那些行,将
                每行中的第二个和第三个符号传递给 for 函数体,用逗号和/或
                空格分隔符号。请注意,此 for 函数体的语句引用 %i 来
                取得第二个符号,引用 %j 来获得第三个符号,引用 %k
                来获得第三个符号后的所有剩余符号。对于带有空格的文件
                名,您需要用双引号将文件名括起来。为了用这种方式来使
                用双引号,还需要使用 usebackq 选项,不然,双引号会
                被理解成是用作概念某个要分析的字符串的。
                %i 在 for 语句中显式声明,%j 和 %k 是通过

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。