bat 批处理脚本
目录:
1:ping多个不同服务器IP
2:每隔一段时间清一次DNS缓存
3:将一个文件夹中的所有文件,分别保存在一个新文件夹中,以保持每个文件夹一个文件
功能1:ping多个不同服务器IP
环境开通防火墙后,经常需要对其他不同服务器进行网络连通测试。这时就需要ping多个不同服务器,这里简单列了一个windows下的批处理文件,简单做下备忘。
步骤:
1、在一个文件夹,先保存一个ping.txt的文件,存放不同机器的ip地址。
10.9.16.91 10.9.16.92 10.9.16.93 10.9.16.97
2、在相同文件夹,编写一个pingtest.cmd的程序文件,用于进行连通性测试。
格式如下:
echo ------------lost connection ip list------------> err.txt @echo off for /f %%i in (ip.txt) do ( ping %%i -n 1 if errorlevel 1 echo %%i >>err.txt ) notepad err.txt
执行完成后,会将执行失败的IP存到err.txt文件中。
------------lost connection ip list------------ 10.9.16.91 10.9.16.92 10.9.16.97
功能2:每隔一段时间清一次DNS缓存
预期目标:每隔一段时间清一次DNS缓存,清之前打印当前机器的DNS情况,并将更新时间与次数都打印输出到一个文件中。
实现:脚本开始执行后,需要手动关闭dos窗口才会终止,否则会一直执行。
@echo off set "a=0" echo *********定时清理缓存开始*********>>D:\flushdns_01.txt,D:\flushdns_02.txt echo 日期,时间,次数>>D:\flushdns_01.txt,D:\flushdns_02.txt :loop ipconfig /displaydns >>D:\flushdns_02.txt ipconfig /flushdns set /a "a=%a%+1" echo %date%,%time%,第%a%次 >>D:\flushdns_01.txt,D:\flushdns_02.txt
timeout /t 5 /nobreak > nul
goto loop
说明:
ipconfig /displaydns >>D:\flushdns_02.txt 即,将查看DNS结果输出到指定目录中。
timeout /t 5 /nobreak > nul 表示,等待5秒。有的机器可能不支持,需要先手动在dos窗口下执行下,如果不支持,则需要做下简单配置。
参考网上找到的一个小程序
@echo off setlocal enabledelayedexpansion set "a=0" :loop start "" /b /wait "1.bat"(要执行的程序) set /a "a=!a!+1" echo 次数!a! if %a%==5(执行的次数) exit goto loop
功能3:将一个文件夹中的所有文件,分别保存在一个新文件夹中,以保持每个文件夹一个文件
步骤:
1、将d:\test目录下10个文件的文件名称打印到一个新文件夹ip.txt中。
2、通过for循环获取到ip.txt中的每行文件,每一个文件名称创建一个文件夹,并且将该文件移动到新建的文件夹中。
@echo on d: cd d:\test dir *.* /B >d:\test\ip.txt for /f %%I in (d:\test\ip.txt) do md d:\test\%%~nI && move %%I d:\test\%%~nI\%%I
说明:
1、for /f %%I in (d:\test\ip.txt) do md d:\test\%%~nI && move %%I d:\test\%%~nI\%%I
这行脚本在dos环境下直接执行需要将%%I转换为%I。
在批处理程序中使用 FOR 命令时,指定变量请使用 %%variable 而不要用 %variable。
2、%%~nI 表示只取变量中的文件名称,还有其他很多取值方式。
3、md ip 创建一个文件夹