用ping检查开机电脑,写了下面的批处理,请问怎样添加变量,让电脑名可以递增,并且在某一个值结束?

电脑名都是PH-L00400这种形式,现在要对变量V1做一个递增的变量,即如果我输入PH-L00400,执行完一次后下一次执行ping PH-L00401
@echo off
set /p start=起始电脑名
for /f "delims=- tokens=2" %%a in ("%start%") do (
set v1=%%a
)
echo 正在扫描...
for %%d in (%v1%,1,450) do (
ping /n 1 PH-%%d >nul && echo PH-%%d 开机 && echo PH-%%d>>在线主机.txt || echo PH-%%d 关机 && echo PH-%%d >>不在线主机.txt
)

set /a start=%start%+1
上述start 必需是数字。不能带字母、字符。追问

能否详细点

追答

我试了一下。你看看可不可以。用下面代码执行。
set start= 400
for /l %%d in (1,1,450) do call :begin %%d

:begin

set /a start1=%start%+%1
echo %start%
set start2=PH-L00%start1%
echo %start2%
ping /n 1 %start2% | find "TTL"
if %errorlevel%==1 echo %start2% >>不在线主机.txt
if %errorlevel%==0 echo %start2% >>在线主机.txt
set errorlevel=1

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-06-10
你那样(按减号的位置)分的话,变量%v1%还带字母,不能使用for /l 循环。
@echo off
set /p start=起始电脑名
set v1=%start:-3%
set v2=%start:,-3%
echo 正在扫描...
for /l %%d in (%v1%,1,450) do (
ping /n 1 %v2%%%d >nul && echo %v2%%%d 开机 && echo %v2%%d>>在线主机.txt || echo %v2%%%d 关机 && echo %v2%%%d >>不在线主机.txt
)本回答被网友采纳
第2个回答  2012-06-10
@echo off
set /p start=起始电脑名
for /f "delims=- tokens=2" %%a in ("%start%") do (
set v1=%%a
)
echo 正在扫描...
for /l %%d in (%v1% 1 450) do (
ping /n 1 PH-%%d >nul && echo PH-%%d 开机 && echo PH-%%d>>在线主机.txt || echo PH-%%d 关机 && echo PH-%%d >>不在线主机.txt
)

在试试,我把上面的内容加了/L,然后里面我习惯不用,好的
相似回答