天天看點

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 建立一個檔案夾

繼續閱讀