Batch file 消除冗余批处理脚本
我是批处理新手,需要一些关于如何缩短脚本的指导。。。 它工作正常,但有很多重复线 脚本将“arp-a”发送到temp文件进行解析,然后通过6ip地址检查它们是否是静态的 任何建议,创造更短更好的方法将不胜感激。谢谢大家!Batch file 消除冗余批处理脚本,batch-file,Batch File,我是批处理新手,需要一些关于如何缩短脚本的指导。。。 它工作正常,但有很多重复线 脚本将“arp-a”发送到temp文件进行解析,然后通过6ip地址检查它们是否是静态的 任何建议,创造更短更好的方法将不胜感激。谢谢大家! 这应该替代 对于n=1到6,第一个将VARn设置为“站点Cn失败”。 下一个FOR解释ARP的输出,在管道告诉批处理管道是命令的一部分,而不是FOR之前,为“static”插入符号(^)进行过滤。 嵌套FOR循环通过字符串192.168.0.1``到192.168.0.16,
这应该替代 对于n=1到6,第一个将
VARn
设置为“站点Cn失败”。
下一个FOR解释ARP
的输出,在管道告诉批处理管道是命令的一部分,而不是FOR之前,为“static”
插入符号(^
)进行过滤。
嵌套FOR循环通过字符串192.168.0.1``到
192.168.0.16,如果它与
ARP输出中的第一个标记匹配(在
%%A中),则相应的变量设置为
..匹配`
最后,响应var1
。var6
的内容
似乎没有理由使用令牌3,因为%%B只会是“静态”的,这取决于您的筛选器。同样,空格是一个默认分隔符,其他默认值都不会出现在ARP
输出行中
这应该替代
对于n=1到6,第一个将VARn
设置为“站点Cn失败”。
下一个FOR解释ARP
的输出,在管道告诉批处理管道是命令的一部分,而不是FOR之前,为“static”
插入符号(^
)进行过滤。
嵌套FOR循环通过字符串192.168.0.1``到
192.168.0.16,如果它与
ARP输出中的第一个标记匹配(在
%%A中),则相应的变量设置为
..匹配`
最后,响应var1
。var6
的内容
似乎没有理由使用令牌3,因为%%B只会是“静态”的,这取决于您的筛选器。同样,空格是一个默认分隔符,在ARP
输出行中不会出现任何其他默认值。谢谢您的帮助。这为我的剧本打开了一个全新的视角。谢谢你的帮助。这为我的脚本打开了一个全新的视角。
@ECHO OFF
cls
ECHO ---------------Check SiteC IP = Static -----------------
ARP -a > O:\temp_log.txt
SET /A var1 = 0
SET /A var2 = 0
SET /A var3 = 0
SET /A var4 = 0
SET /A var5 = 0
SET /A var6 = 0
FOR /F "tokens=1,3 delims= " %%A IN ('findstr "static" "O:\temp_log.txt"') DO IF "%% A"=="192.168.0.11" ECHO %%A = %%B && SET /A var1 = 1
IF %var1% == 1 ( ECHO Match ) ELSE ( ECHO SiteC1 FAIL )
ECHO --
FOR /F "tokens=1,3 delims= " %%A IN ('findstr "static" "O:\temp_log.txt"') DO IF "%%A"=="192.168.0.12" ECHO %%A = %%B && SET /A var2 = 1
IF %var2% == 1 ( ECHO Match ) ELSE ( ECHO SiteC2 FAIL )
ECHO --
FOR /F "tokens=1,3 delims= " %%A IN ('findstr "static" "O:\temp_log.txt"') DO IF "%%A"=="192.168.0.13" ECHO %%A = %%B && SET /A var3 = 1
IF %var3% == 1 ( ECHO Match ) ELSE ( ECHO SiteC2 FAIL )
ECHO --
FOR /F "tokens=1,3 delims= " %%A IN ('findstr "static" "O:\temp_log.txt"') DO IF "%%A"=="192.168.0.14" ECHO %%A = %%B && SET /A var4 = 1
IF %var4% == 1 ( ECHO Match ) ELSE ( ECHO SiteC2 FAIL )
ECHO --
FOR /F "tokens=1,3 delims= " %%A IN ('findstr "static" "O:\temp_log.txt"') DO IF "%%A"=="192.168.0.15" ECHO %%A = %%B && SET /A var5 = 1
IF %var5% == 1 ( ECHO Match ) ELSE ( ECHO SiteC5 FAIL )
ECHO --
FOR /F "tokens=1,3 delims= " %%A IN ('findstr "static" "O:\temp_log.txt"') DO IF "%%A"=="192.168.0.16" ECHO %%A = %%B && SET /A var6 = 1
IF %var6% == 1 ( ECHO Match ) ELSE ( ECHO SiteC6 FAIL )
ECHO.
ECHO.
pause
@ECHO OFF
SETLOCAL
FOR /l %%s IN (1,1,6) DO SET "var%%s=Site C%%s FAIL"
FOR /f %%A IN ('arp -a ^|findstr "static"') DO (
FOR /l %%s IN (1,1,6) DO ( ECHO %%A
IF %%A==192.168.0.1%%s SET var%%s=Site C%%s Match
)
)
FOR /l %%s IN (1,1,6) DO CALL ECHO %%var%%s%%
GOTO :EOF