分析文件并调用函数
Analyze a file and call function
我写了一个批处理脚本,但遇到了一点问题。
基本上,我有一个文件 "ip_file.txt" 和 IP (% ip_file%)。
我的脚本解析此文件,并根据 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
有什么想法吗?
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)
假设%ip_file%
引用的文件内容是一个IPv4地址列表(或者至少每行以一个IPv4地址开头),你可以使用tokens
和delims
在 .
.
上拆分
@echo off
setlocal
REM // START MAIN RUNTIME
set "ip_file=path\to\ip_file.txt"
for /f "usebackq tokens=1-4 delims=." %%a in ("%ip_file%") do (
if "%%a.%%b"=="10.10" (
call :script_1 %%a.%%b.%%c.%%d
) else if "%%a.%%b"=="192.168" (
call :script_2 %%a.%%b.%%c.%%d
) else call :script_0 %%a.%%b.%%c.%%d
)
goto :EOF
REM // END MAIN RUNTIME
:script_0 <ip>
rem // catch-all
goto :EOF
:script_1 <ip>
rem // handle 10.10 addresses
goto :EOF
:script_2 <ip>
rem // handle 192.168 addresses
goto :EOF
还应注意,当您 call :label
where label 以冒号开头时,您是在同一个批处理脚本中调用子例程。如果您确实在调用外部批处理脚本,请不要使用冒号。
我写了一个批处理脚本,但遇到了一点问题。
基本上,我有一个文件 "ip_file.txt" 和 IP (% ip_file%)。
我的脚本解析此文件,并根据 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
有什么想法吗?
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)
假设%ip_file%
引用的文件内容是一个IPv4地址列表(或者至少每行以一个IPv4地址开头),你可以使用tokens
和delims
在 .
.
@echo off
setlocal
REM // START MAIN RUNTIME
set "ip_file=path\to\ip_file.txt"
for /f "usebackq tokens=1-4 delims=." %%a in ("%ip_file%") do (
if "%%a.%%b"=="10.10" (
call :script_1 %%a.%%b.%%c.%%d
) else if "%%a.%%b"=="192.168" (
call :script_2 %%a.%%b.%%c.%%d
) else call :script_0 %%a.%%b.%%c.%%d
)
goto :EOF
REM // END MAIN RUNTIME
:script_0 <ip>
rem // catch-all
goto :EOF
:script_1 <ip>
rem // handle 10.10 addresses
goto :EOF
:script_2 <ip>
rem // handle 192.168 addresses
goto :EOF
还应注意,当您 call :label
where label 以冒号开头时,您是在同一个批处理脚本中调用子例程。如果您确实在调用外部批处理脚本,请不要使用冒号。