经过一些网上的学习,觉得windows的批处理有点像shell。
echo off表示在此句后所有运行的命令不显示命令行本身;
@与echo off相似,表示运行时不显示命令行本身;
@echo off 不提供回显;
echo hello world 学习编程语言第一句话helloworld;
pause 暂停--类似C++system(“PAUSE”);
rem calc中rem表示此命令后的字符为注释行
cmd下:
1.批处理ping一个网段
for /L %D in (10,1,15) do ping 192.168.1.%D
参数 /L (该集表示以增量形式从开始到结束的一个数字序列。可以使用负的 Step)
(10,1,15)就是每次逐增1,从192.168.1.10到192.168.1.15的这6个ip。
C:Usersks>@echo off for /L %D in (10,1,15) do echo 192.168.1.%D 192.168.1.10 192.168.1.11 192.168.1.12 192.168.1.13 192.168.1.14 192.168.1.15 for %D in (10,1,15) do echo 192.168.1.%D 192.168.1.10 192.168.1.1 192.168.1.15
%表示参数,参数是指运行批处理文件时在文件名后加的字符串。变量可以从%0到%9,%0表示文件本身,字符串用%1到%9的顺序表示。
例如:c盘目录下批处理文件f.bat,内容为format %1,则执行C:>f a:则执行的是format a:
C:Usersks>for /? 对一组文件中的每一个文件执行某个特定命令。 FOR %variable IN (set) DO command [command-parameters] %variable 指定一个单一字母可替换的参数。 (set) 指定一个或一组文件。可以使用通配符。 command 指定对每个文件执行的命令。 command-parameters 为特定命令指定参数或命令行开关。 在批处理程序中使用 FOR 命令时,指定变量请使用 %%variable 而不要用 %variable。变量名称是区分大小写的,所以 %i 不同于 %I. 如果启用命令扩展,则会支持下列 FOR 命令的其他格式: FOR /D %variable IN (set) DO command [command-parameters] 如果集中包含通配符,则指定与目录名匹配,而不与文件名匹配。 FOR /R [[drive:]path] %variable IN (set) DO command [command-parameters] 检查以 [drive:]path 为根的目录树,指向每个目录中的 FOR 语句。 如果在 /R 后没有指定目录规范,则使用当前目录。如果集仅为一个单点(.)字符, 则枚举该目录树。 FOR /L %variable IN (start,step,end) DO command [command-parameters] 该集表示以增量形式从开始到结束的一个数字序列。因此,(1,1,5)将产生序列
2.批处理ping一个网段,把结果保存在txt文本中
for /L %D in (175,1,179) do ping 192.168.1.%D >> a.txt
a.txt:
正在 Ping 192.168.1.175 具有 32 字节的数据: 来自 192.168.1.179 的回复: 无法访问目标主机。 来自 192.168.1.179 的回复: 无法访问目标主机。 来自 192.168.1.179 的回复: 无法访问目标主机。 来自 192.168.1.179 的回复: 无法访问目标主机。 192.168.1.175 的 Ping 统计信息: 数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失), 正在 Ping 192.168.1.176 具有 32 字节的数据: 来自 192.168.1.179 的回复: 无法访问目标主机。 来自 192.168.1.179 的回复: 无法访问目标主机。 来自 192.168.1.179 的回复: 无法访问目标主机。 来自 192.168.1.179 的回复: 无法访问目标主机。 192.168.1.176 的 Ping 统计信息: 数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失), .....
3.判断结果,把ip分别存不同的文本文件
for /l %D in (177,1,180) do (ping 192.168.1.%D -n 1 && echo 192.168.1.%D>> ok.txt || echo 192.168.1.%D >> fail.txt)
4.读取文件
for /f %D in (ip.txt) do (ping %D -n 1 && echo %D >> ok.txt || echo %D >> fail.txt
bat文件:
5.bat脚本
@echo off
echo begin
for /L %%D in (1,1,20) do start cmd&&echo %%D
pause