批处理文件内容
for /L %%a in (1,1,254) do call ping.bat %%a
目的:想写个打开254个窗口,执行ping.bat,用变量%%a,作为ping.bat的参数,问题是现在只执行第一个%%a,就是1,而不会递增到255,是不是for /L,不支持call bat文件?用for / f 就没有问题!
还有个问题:命令ping 192.168.0.1 | findstr "Relpy" >nul ,在dos下直接执行正常,如果写在批处理下,就会显示成ping 192.168.1.1 | findstr "Reply" 1>nul
,请教多出来的1是怎么回事,请高手指点,先谢谢啦!!作者: ywjco 时间: 2008-1-12 23:07 第一个:
for /L %%a in (1,1,254) do call ping.bat %%a要想在循环中引用变量, 需要使用变量廷迟扩展:
***************************
@echo off
setlocal EnableDelayedExpansion
set /a n=0
for /L %%a in (1,1,254) do (
set /a n=%%a
::echo !n! in Main_bat
call ping.bat !n!
)
pause
*********************************
第二个:
1>nul中的1是STDOU, 即XP CMD的命令行窗口. 是因为你在BAT中使用了重定向(即把标准输出重定向到nul设备中),用@echo off 可关闭其显示, 并不影响BAT的执行.
以上在XP SP2 CMD下测试.:P
[ Last edited by ywjco on 2008-1-12 at 11:11 PM ]作者: lxmxn 时间: 2008-1-13 00:34 把“call”改成“start”。作者: dby55 时间: 2008-1-13 06:55 又学到知识了作者: sy790825 时间: 2008-1-13 18:54 标题: 感谢各位英雄指点,呵呵!