批处理脚本 - 使用条件语句的问题

时间:2017-06-08 05:04:51

标签: batch-file

我有一个批处理脚本需要检查计算机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地址不在范围内,则转到下一行(不检查相关文本文件)

1 个答案:

答案 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