Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 消除冗余批处理脚本_Batch File - Fatal编程技术网

Batch file 消除冗余批处理脚本

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,

我是批处理新手,需要一些关于如何缩短脚本的指导。。。 它工作正常,但有很多重复线

脚本将“arp-a”发送到temp文件进行解析,然后通过6ip地址检查它们是否是静态的

任何建议,创造更短更好的方法将不胜感激。谢谢大家!


这应该替代

对于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