
[已解決]自編檢測網絡狀況的批處理代碼為什么時間一長程序會自動終止最后由 小胖狐貍 于 -12-9 10:38前幾天單位的網絡出現故障,我試圖寫個批處理時刻運行,檢測網絡狀況兩個問題:1、實際應用發現長時間執行該批處理,會自動終止,請教為什么,如何解決?2、這個批處理本來在for語句中,我是調用兩個函數do1和do2,后來發現語句類似,就設法將兩個函數合并了,但是實際應用中發現合并前,該批處理執行時占用內存為1M多,合并后占用2M多,請問如何讓批處理盡量少的占用內存?——現在是代碼看似簡潔了,占內存反而多了補充:剛剛才發現,這個批處理在執行的時候,居然每秒鐘占用內存量都會增加50K左右,發帖到現在已經9M多了……現在我猜到為什么會自動終止了工作原理簡單說明:默認ping www.baidu.com的聯通狀況,如果連接狀態發生變化,則寫入日志文件,并檢測另外兩個連接狀態文中涉及的IP_url.txt內容如下,文中涉及的log日志文件供寫入
nclick="copycode($('code0'));">復制代碼
- 檢查以下特定網絡地址的連通性
- 局域網網關:192.168.1.1
- 百度IP:61.135.169.125
- 百度URL:www.baidu.com
nclick="copycode($('code1'));">復制代碼
- 備注:退格符此處無法顯示 set 退格=
- @echo off&setlocal enabledelayedexpansion
- color 0A
- cls
- mode con: cols=50 lines=4
- :: 通訊正常時 status=1,異常時 status=0;
- set status1=1
- set status2=1
- set status3=1
- set skipnum=3
- set connect1=通訊正常
- set connect0=通訊異常
- set connectS1=恢復連接
- set connectS0=無法連接
- set 退格=
- echo.>>ConnectError.Log
- echo.>>ConnectError.Log
- echo ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓>>ConnectError.Log
- echo ┃%date% %time:~,-3% 開始監控指定IP地址的連通狀況 ┃>>ConnectError.Log
- echo ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛>>ConnectError.Log
- echo.>>ConnectError.Log
- :detect
- ::判斷配置文件IP_url.txt中指定IP地址是否能ping通
- for /f delims=: tokens=1,2 skip=%skipnum% %%i in (IP_url.txt) do (
- set var_ip=%%j
- set var_n=%%i
- ping -n 1 -l 1 -w 1 !var_ip!|find /i TTL=>nul &&call :do 1 0 3||call :do 0 1 1
- )
- :do
- ::根據不同狀況改變顏色
- if %1 equ 1 (color 0A) else (color EC)
- ::設置屏顯及閃動●
- set var1=%1
- set /p a=%退格%<nul
- set /p a=<nul
- ping -n 1 127.1>nul
- set /p a=%退格%<nul
- set /p a= ● !var_n! !var_ip! !connect%var1%!<nul
- ::如果連通狀態有變化,則寫入日志
- if !status%skipnum%! equ %2 (
- set status%skipnum%=%1
- echo %date% %time:~,-3% !var_n! !var_ip! !connectS%var1%!>>ConnectError.Log
- )
- if %1 equ 1 (if %skipnum% lss 3 (set /a skipnum=%random%%%3+1)) else (if %skipnum% gtr 1 (set /a skipnum=%random%%%3+1))
- call :delay2&&goto :detect
- :delay2
- ping -n 3 127.1>nul

