bat 批处理脚本

倖福魔咒の 提交于 2020-03-09 16:32:39

目录:

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 创建一个文件夹

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!