我有一个批处理脚本需要检查计算机IP地址范围和用户配置文件下的文本文件,如果两者都满足则必须结束,否则调用批处理文件然后继续检查另一个IP范围和文本文件等等。
IP范围和文本文件如下:
IP 10.0.50.xxx,10.0.51.xxx: 搜索%username%10.txt
IP 10.0.1.xxx,10.0.5.xxx:搜索 %username%11.txt
IP 10.0.60.xxx:搜索%username%12.txt
IP 10.0.100.xxx:搜索%username%13.txt
我尝试了if else和&&的多种变体。 ||没有运气的陈述。脚本仅检查文本文件,但不检查IP范围。
我删除了else,if语句并且只粘贴了我使用的代码。任何人都可以看看,让我知道实现其他方法的最佳方法,如果进入此代码?谢谢
for %%a in (50,51) do if not exist "%USERPROFILE%\%username%10.txt" ( IPConfig|FindStr/IRC:"IPv4 .*: 10.0.%%a.">Nul 2>&1 && call sydprintmap.bat
)
for %%a in (1,5) do if not exist "%USERPROFILE%\%username%11.txt" ( IPConfig|FindStr/IRC:"IPv4 .*: 10.0.%%a.">Nul 2>&1 && call melprintmap.bat
)
for %%a in (60) do if not exist "%USERPROFILE%\%username%12.txt" ( IPConfig|FindStr/IRC:"IPv4 .*: 10.0.%%a.">Nul 2>&1 && call wynprintmap.bat
)
for %%a in (100) do if not exist "%USERPROFILE%\%username%13.txt" ( IPConfig|FindStr/IRC:"IPv4 .*: 10.0.%%a.">Nul 2>&1 && call adlprintmap.bat
)
PS: 我需要的是:
1:如果IP地址在范围内且文本文件存在,则转到结束。
2-如果IP地址在范围内但文本文件不存在,则运行特定脚本。
3-如果IP地址不在范围内,则转到下一行(不检查相关文本文件)
答案 0 :(得分:0)
我不确定我是否完全理解这项任务,但你可以试试这个:
@Echo Off
For /F "Tokens=2 Delims=:" %%A In ('IPConfig^|FindStr/IRC:"\<IPv4.*\ :\ 10\.0\.[156]\."'
) Do For /F "Tokens=3 Delims=." %%B In ("%%A") Do Set "byte3=%%A"
If "%byte3%" GEq "50" If "%byte3%" LEq "51" If Not Exist "%UserProfile%\%UserName%10.txt" sydprintmap.bat
If "%byte3%" Equ "1" If Not Exist "%UserProfile%\%UserName%11.txt" melprintmap.bat
If "%byte3%" Equ "5" If Not Exist "%UserProfile%\%UserName%11.txt" melprintmap.bat
If "%byte3%" Equ "60" If Not Exist "%UserProfile%\%UserName%12.txt" wynprintmap.bat
If "%byte3%" Equ "100" If Not Exist "%UserProfile%\%UserName%13.txt" adlprintmap.bat