胡小輝 上海鐵路局科研所
批處理文件(Batch File)是一種在DOS系統(tǒng)下就已經(jīng)存在、而且最常用的可執(zhí)行文件,簡稱批處理。它具有使用方便、靈活,功能強大,自動化程度高的鮮明特點。現(xiàn)今Windows環(huán)境已經(jīng)非常普及,視窗操作早已深入人心,絕大部分操作只要點擊幾次鼠標(biāo)就可以完成,但在DOS時代就已存在的批處理并沒有因此而消失。相反,合理巧妙地利用批處理,能實現(xiàn)許多Windows不愿干的事情、干不好的事情,甚至不能干的事情。
實際應(yīng)用中,編寫批處理程序也十分簡單,在計算機中打開一個記事本,寫入相應(yīng)的批處理命令,然后保存后綴名為.bat的文件,一個批處理程序就寫好了。批處理的編寫和使用環(huán)境是如此之方便,將其應(yīng)用于超偏載、軌道衡監(jiān)控工作中,能給我們帶來一些實用而又意想不到的功能,減少重復(fù)勞動,提高工作效率。
我局超偏載和路用動態(tài)軌道衡共有50多臺次,分布在各大編組站區(qū),絕大部分設(shè)備遠離上海路局本部,而且所有的超偏載和部分軌道衡前端機房是無人值守狀態(tài)。有時前端計算機出現(xiàn)斷網(wǎng),由于無人值守,監(jiān)控人員也不可能時刻檢測前端計算機的網(wǎng)絡(luò)狀態(tài),將出現(xiàn)數(shù)據(jù)延遲上傳、甚至丟失過車數(shù)據(jù)等狀況。為避免發(fā)生這種情況,將代碼1里的內(nèi)容保存到記事本里,后綴名改為.bat,放到前端計算機啟動項內(nèi),就能在開機后每隔1min自動檢查本機網(wǎng)絡(luò)狀態(tài),如果網(wǎng)絡(luò)正常則繼續(xù)監(jiān)視本機網(wǎng)絡(luò)狀態(tài),一旦網(wǎng)絡(luò)中斷,則自動重啟計算機。
[code1]
@echo off
rem檢查本機網(wǎng)絡(luò)狀態(tài)程序
cls&color 2f&title本機網(wǎng)絡(luò)檢測
echo程序正在初始化…
:start
ping網(wǎng)關(guān)IP>nul
if%errorlevel%==0(echo網(wǎng)絡(luò)通暢!
ping-n 61 127.1>nul&goto start
)else(echo網(wǎng)絡(luò)中斷,機器將30秒后重啟!
shutdown-s-f&exit)
[/code1]
實際應(yīng)用時只要將代碼中的“網(wǎng)關(guān)IP”改成實際的IP就行了,如:10.133.105.1,這樣就可以很輕松地實現(xiàn)網(wǎng)絡(luò)狀態(tài)自動監(jiān)測,實現(xiàn)無人監(jiān)控的目的。為防止確因物理連接斷網(wǎng)導(dǎo)致機器一直重啟,在代碼中加入記數(shù)代碼,記錄在一定時間內(nèi)重啟次數(shù),達到設(shè)定值后,僅執(zhí)行關(guān)機動作。
超偏載和軌道衡的前端機器內(nèi)安裝了相應(yīng)的稱重、數(shù)據(jù)上傳程序。稱重程序是超偏載的核心程序,沒有它,過車也無法產(chǎn)生數(shù)據(jù)。數(shù)據(jù)上傳程序負責(zé)將數(shù)據(jù)上傳到指定的計算機,以便后續(xù)計算機再對這些數(shù)據(jù)處理。為防止這些重要的程序意外退出或沒有響應(yīng),編寫一個批處理文件,始終監(jiān)測這些程序是否運行,如果沒有運行或沒有響應(yīng),就重新運行這些程序。這樣,即使人為誤操作關(guān)閉了這些重要程序,計算機也能讓這些程序自動運行起來。代碼如下:
[code2]
@echo off&setlocal enabledelayedexpansion
for/f"tokens=2,4 delims==;"%%i in(pro.ini)do(
set/a n+=1
setname!n!=%%i
setpath!n!=%%j
)
:loop
for/l%%i in(1,1,%n%)do(
tasklist/fi"status eq running"|findstr/i"!name%%i!"
if!errorlevel!==0(echo程序正在運行!
)else(echo打開程序&start"""!path%%i!")
)
goto loop
pause>nul
[/code2]
代碼讀取了配置文件pro.ini,只要將被監(jiān)控的程序進程圖像名和完整路徑按格式寫入其中就可以了,被監(jiān)控程序可允許多個,在配置文件內(nèi)添加。
為保證超偏載和軌道衡前端機器每次啟動后能自動登錄到桌面,順利地執(zhí)行后序的程序,必須將計算機設(shè)置成自動登錄狀態(tài),以便遠程監(jiān)控操作。前端機器的操作系統(tǒng)主要有Win98、Win2000、Win2003,xp,通過批處理修改注冊表實現(xiàn)開機自動登錄。為兼容各種系統(tǒng),程序做了智能檢測,根據(jù)是否是NT系統(tǒng)選擇要執(zhí)行的代碼,并提供設(shè)置說明。具體代碼如下:
[code3]
@echo off&cls&title自動登錄設(shè)置&color 2f
mode con:cols=62 lines=22
set s=%OS%
if/i"%s%"=="Windows_NT"(goto loop1)else(goto loop2)
:loop1
echo.
echo======================================
echo %s%系統(tǒng)自動登錄設(shè)置說明
echo======================================
echo.
echo 1.彈出來"用戶賬戶"窗口,取消"要使用本機,用戶必須輸入用戶名和密碼(E)"選項;
echo.
echo 2.單擊"應(yīng)用"按鈕,在接下來彈出來的對話框里輸入自動登錄時用的"用戶名"和"密碼";
echo.
echo 3.請按任意鍵進入"用戶賬戶"。&pause>nul
echo.
rundll32 netplwiz,UsersRunDll||control userpasswords2
echo 如果您已完成設(shè)置,請按任意鍵退出。如未成功,退出后,請重新運行本批處理,按說明重新操作一遍。 &pause>nul
exit
:loop2
echo.
echo======================================
echo %s%系統(tǒng)自動登錄設(shè)置說明
echo======================================
echo.
set/p une=請輸入登錄時使用的用戶名:
set/p pwd=請輸入登錄時使用的密碼:
set"AAL=AutoAdminLogon"
set"DUN=DefaultUserName"
set"DPW=DefaultPassword"
set"str=HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionWinlogon"
reg add%str%/v%AAL%/d 1
reg add%str%/v%DUN%/d%une%
reg add%str%/v%DPW%/d%pwd%
[/code3]
根據(jù)《鐵道部超偏載和軌道衡暫行管理辦法》規(guī)定:“前端機器上嚴(yán)禁安裝游戲和其它不必要的軟件”,這是為了避免導(dǎo)致系統(tǒng)故障或感染病毒,保證機器正常運行。部分軌道衡前端是有人值守的,但計算機在單機情況下仍出現(xiàn)中毒,后經(jīng)檢查發(fā)現(xiàn),是有人在機器上非法使用優(yōu)盤所致。為防止他人在前端機器上使用優(yōu)盤、光驅(qū)帶來不必要的麻煩,通過批處理,禁止這些功能的使用,需要用到的時候再解禁。以下代碼可以實現(xiàn)優(yōu)盤的禁用或啟動功能:
[code4]
@echo off&title優(yōu)盤設(shè)置&color 2f
mode con:cols=50 lines=15
echo禁止優(yōu)盤請輸入[Y],啟動請輸入[N]
:loop
set/p s=請選擇Y/N:
set"str=HKLMSYSTEMCurrentControlSetServicesUSBSTOR"
if/i"%s%"=="y"(
reg add"%str%"/v"Start"/t REG_DWORD/d 4/f
echo禁止成功)else(
if/i"%s%"=="n"(
reg add"%str%"/v"Start"/t REG_DWORD/d 3/f
echo啟動成功)else echo輸入錯誤!&goto loop)
echo按任意鍵退出&pause>nul
[/code4]
光驅(qū)與優(yōu)盤的禁用和啟動原理類似,在此就不將代碼一一羅列了。
在分析過車是否存在誤報信息時,需要將過車信息文件與XML格式的確報文件對比,而兩種文件的格式很不相同,對比起來很不方便。圖1、2是兩種格式頁面的對比。
圖1 監(jiān)控系統(tǒng)上的過車頁面
經(jīng)過批處理對XML格式報文的修改,輸出圖3格式的報文,就能很快找到過車信息與確報之間不同之處,迅速發(fā)現(xiàn)過車誤報的問題。
圖2 確報文件頁面
圖3 確報文件轉(zhuǎn)換之后的頁面
確報文件轉(zhuǎn)換代碼如下:
[code5]
@echo off&setlocal enabledelayedexpansion
set"str=RQ>SF>YXCC>LS>
for/r%%a in(*.xml)do(
for/f"tokens=3 delims=<>"%%i in ('findstr/ri"%str%"%%~nxa')do(
set/a n+=1&set"str=%%i "
set"str=!str:~0,9!"
if!n! equ 7(set n=1&echo.&set/p=!str! )>>%%~na.txt echo echo set/p=轉(zhuǎn)換完畢!請按任意鍵退出! [/code5] 批處理簡單實用,應(yīng)用環(huán)境廣闊,尤其適用于文件、系統(tǒng)的操作。只要我們勤于思考、認真研究,就會發(fā)現(xiàn)合理地運用批處理,將給我們的超偏載和軌道衡設(shè)備的管理、監(jiān)控和檢修工作帶來許多方便。6 結(jié)束語