File 分析文件并调用函数
我写了一个批处理脚本,我有一个小问题 基本上,我有一个带有ip(%ip\U file%)的文件“ip\U file.txt”。File 分析文件并调用函数,file,batch-file,if-statement,for-loop,call,File,Batch File,If Statement,For Loop,Call,我写了一个批处理脚本,我有一个小问题 基本上,我有一个带有ip(%ip\U file%)的文件“ip\U file.txt”。 我的脚本解析这个文件,并基于IP调用一个特定的程序 下面是我写脚本的方式,但它不起作用 REM START SCRIPT BASE for /f %%i in (%ip_file%) do ( IF %%a.%%b.==10.10 call :script_1 %%i IF %%a.%%b.==192.168 call :script_2 %%i ) else
我的脚本解析这个文件,并基于IP调用一个特定的程序 下面是我写脚本的方式,但它不起作用
REM START SCRIPT BASE
for /f %%i in (%ip_file%) do (
IF %%a.%%b.==10.10 call :script_1 %%i
IF %%a.%%b.==192.168 call :script_2 %%i
)
else ( call :script_0 %%i)
REM END SCRIPT BASE
有什么想法吗?假设
%ip\u file%
引用的文件内容是IPv4地址列表(或者至少每行以IPv4地址开头),您可以使用令牌和delims
进行拆分
for /f %%i in (%ip_file%) do (
set ip=%%i
if %ip:~0,5%==10.10 call :script_1 %%i
if %ip:~0,7%==192.168 call :script_2 %%i
)
else ( call :script_0 %%i)
@echo关闭
setlocal
REM//启动主运行时
将“ip_file=path\to\ip_file.txt”设置为
对于/f“usebackq tokens=1-4 delims=。”%%a in(“%ip_文件%”)do(
如果“%%a.%b”==“10.10”(
调用:脚本1%%a.%b.%c.%d
)如果“%%a.%b”==“192.168”,则为else(
调用:脚本2%%a.%b.%c.%d
)else调用:脚本0%%a.%b.%c.%d
)
后藤:EOF
REM//结束主运行时
:脚本0
雷姆//一网打尽
后藤:EOF
:脚本_1
rem//句柄10.10地址
后藤:EOF
:脚本2
rem//句柄192.168地址
后藤:EOF
还应该注意的是,当您调用:label时,如果label以冒号开头,那么您正在调用同一批脚本中的子例程。如果您确实在调用外部批处理脚本,请不要使用冒号。您希望%%a和%%b中有什么内容?你在哪里定义它们?这是我的错。现在问题解决了,这个也坏了<代码>!ip:~0,n如果使用此子字符串提取方法,则代码>需要延迟扩展(以及setlocal enabledelayedexpansion
)。另外,else
需要位于if
语句的结束括号旁边。最后,我决定使用标记。非常感谢您的回答和建议。我添加了以下内容:设置ip=%%A.%b.%c.%d,所以现在我使用!ip!调用我的脚本。又比你强