Batch file 我需要批处理来创建尽可能多的变量

Batch file 我需要批处理来创建尽可能多的变量,batch-file,Batch File,例如: :loop set n=0 set m=254 set /a n+=1 ping -n 1 -w 500 xxx.xxx.xxx.%n% | find /i "reply" > file =====BELOW is what I need===== set a=0 set /a a+=1 set %a%= < file ====ABOVE is what I need===== if %n% lss %m% goto loop :循环 设置n=0 设置m=254 设置

例如:

:loop
set n=0
set m=254
set /a n+=1
ping -n 1 -w 500 xxx.xxx.xxx.%n%  | find /i "reply" > file

=====BELOW is what I need=====
set a=0
set /a a+=1
set %a%= < file
====ABOVE is what I need=====

if %n% lss %m% goto loop
:循环
设置n=0
设置m=254
设置/a n+=1
ping-n 1-w 500 xxx.xxx.xxx.%n%|查找/i“回复”>文件
======下面是我需要的=====
设置a=0
设置/a a+=1
设置%a%=<文件
上面是我需要的=====
如果%n%lss%m%goto循环
因此,我特别需要一个批处理脚本,它可以使变量的数量达到循环的数量。我寻找了很多答案,甚至自己尝试了一些想法。。。但我想不出这个。。。因为我是ubuntu用户,所以我想我缺乏批处理知识,所以我不会赢。提前谢谢。问候

@echo off
    setlocal enableextensions disabledelayedexpansion

    for /l %%n in (1 1 254) do (
        for /f "tokens=*" %%r in (
            'ping -n 1 -w 500 xxx.xxx.xxx.%%n ^| find "reply" '
        ) do set "a[%%n]=%%r"
    )
    set a[

    endlocal
这使用
for/f
来运行命令(
ping | find
),并将命令的输出(ping响应的1行,由
find
过滤)分配给名称中带有递增数字的变量

设置一个[
用于在控制台上显示结果数据

这使用
for/f
来运行命令(
ping | find
),并将命令的输出(ping响应的1行,由
find
过滤)分配给名称中带有递增数字的变量


set a[
用于在控制台上显示结果数据

用于/L,而不是带有GOTO的set/a

使用FOR/F来处理命令的结果,而不是临时文件和设置/p

使用精心构造的变量名来模拟数组(在本例中可能是稀疏数组)


使用FOR/L代替带GOTO的SET/A

使用FOR/F来处理命令的结果,而不是临时文件和设置/p

使用精心构造的变量名来模拟数组(在本例中可能是稀疏数组)


请告诉我你想在“set%a%=-2似乎是一个打字错误。
-2
似乎是一个打字错误。
for /l %%N in (1 1 255) do (
  for /f "delims=" %%A in (
    'ping -n 1 -w 500 xxx.xxx.xxx.%%N^|find /i "reply"'
  ) do set "addr[%%N]=%%A"
)
@echo off
if exist Pingresult.txt del Pingresult.txt 

for /l %%n in (1 1 254) do ping -n 1 -w 500 xxx.xxx.xx.%%n | find /i "reply" >>PingResult.txt