在批处理脚本中,当使用 for /f 循环和 delims 选项来分割字符串时,如果分割后的某个字段为空,那么对应的变量(如 %%a, %%b, 等)将不会被赋值,而是保持其之前的值或者为空(如果之前没有赋值过)。这就解释了为什么在你的情况下,当 seo.txt 文件的内容为 ||baidu.com|so.com| 时,%%a 和 %%b 没有被赋值为空字符串。
要正确处理这种情况,你需要确保即使字段为空,也能正确地将其赋值给对应的变量。这可以通过在循环体内显式地检查每个变量是否被赋值来实现,如果没有被赋值,则手动将其设置为空字符串。
以下是一个修改后的脚本示例,它可以正确地处理你的 seo.txt 文件内容:
要正确处理这种情况,你需要确保即使字段为空,也能正确地将其赋值给对应的变量。这可以通过在循环体内显式地检查每个变量是否被赋值来实现,如果没有被赋值,则手动将其设置为空字符串。
以下是一个修改后的脚本示例,它可以正确地处理你的 seo.txt 文件内容:
| @echo off for %%b in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do if exist "%%b:\ipset.txt" (set "OK5=OK5" & set "IPTXTpanfu=%%b:") if "%OK5%"=="" goto tuichu for /f "delims=" %%a in (%IPTXTpanfu%\ipset.txt) do call :read_iptxt "%%a" echo newip2=[%newip2%], netmask2=[%netmask2%], gateway2=[%gateway2%], dns3=[%dns3%], dns4=[%dns4%], mima=[%mima%], rdpport=[%rdpport%] pause && goto :EOF :read_iptxt set "ipset=|%~1" set "ipset=%ipset:|=|%" set "ipset=%ipset:||=|-|%" set "ipset=%ipset:||=|-|%" for /f "tokens=1-7 delims=|" %%a in ("%ipset%") do ( set "newip2=%%a" set "netmask2=%%b" set "gateway2=%%c" set "dns3=%%d" set "dns4=%%e" set "mima=%%f" set "rdpport=%%g" ) goto :EOF :tuichu pause |
文章来源:
网络小编D
版权声明:
本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系本站立刻删除。
