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小时内删除。
发表评论