APP下载

批处理在超偏载和轨道衡工作中的应用

2010-06-21胡小辉上海铁路局科研所

上海铁道增刊 2010年2期
关键词:优盘批处理代码

胡小辉 上海铁路局科研所

批处理文件(Batch File)是一种在DOS系统下就已经存在、而且最常用的可执行文件,简称批处理。它具有使用方便、灵活,功能强大,自动化程度高的鲜明特点。现今Windows环境已经非常普及,视窗操作早已深入人心,绝大部分操作只要点击几次鼠标就可以完成,但在DOS时代就已存在的批处理并没有因此而消失。相反,合理巧妙地利用批处理,能实现许多Windows不愿干的事情、干不好的事情,甚至不能干的事情。

实际应用中,编写批处理程序也十分简单,在计算机中打开一个记事本,写入相应的批处理命令,然后保存后缀名为.bat的文件,一个批处理程序就写好了。批处理的编写和使用环境是如此之方便,将其应用于超偏载、轨道衡监控工作中,能给我们带来一些实用而又意想不到的功能,减少重复劳动,提高工作效率。

1 自动检测网络状态,在无人值守时断网重启

我局超偏载和路用动态轨道衡共有50多台次,分布在各大编组站区,绝大部分设备远离上海路局本部,而且所有的超偏载和部分轨道衡前端机房是无人值守状态。有时前端计算机出现断网,由于无人值守,监控人员也不可能时刻检测前端计算机的网络状态,将出现数据延迟上传、甚至丢失过车数据等状况。为避免发生这种情况,将代码1里的内容保存到记事本里,后缀名改为.bat,放到前端计算机启动项内,就能在开机后每隔1min自动检查本机网络状态,如果网络正常则继续监视本机网络状态,一旦网络中断,则自动重启计算机。

[code1]

@echo off

rem检查本机网络状态程序

cls&color 2f&title本机网络检测

echo程序正在初始化…

:start

ping网关IP>nul

if%errorlevel%==0(echo网络通畅!

ping-n 61 127.1>nul&goto start

)else(echo网络中断,机器将30秒后重启!

shutdown-s-f&exit)

[/code1]

实际应用时只要将代码中的“网关IP”改成实际的IP就行了,如:10.133.105.1,这样就可以很轻松地实现网络状态自动监测,实现无人监控的目的。为防止确因物理连接断网导致机器一直重启,在代码中加入记数代码,记录在一定时间内重启次数,达到设定值后,仅执行关机动作。

2 监测目标进程,保证目标程序持续运行

超偏载和轨道衡的前端机器内安装了相应的称重、数据上传程序。称重程序是超偏载的核心程序,没有它,过车也无法产生数据。数据上传程序负责将数据上传到指定的计算机,以便后续计算机再对这些数据处理。为防止这些重要的程序意外退出或没有响应,编写一个批处理文件,始终监测这些程序是否运行,如果没有运行或没有响应,就重新运行这些程序。这样,即使人为误操作关闭了这些重要程序,计算机也能让这些程序自动运行起来。代码如下:

[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,只要将被监控的程序进程图像名和完整路径按格式写入其中就可以了,被监控程序可允许多个,在配置文件内添加。

3 设置计算机自动登录

为保证超偏载和轨道衡前端机器每次启动后能自动登录到桌面,顺利地执行后序的程序,必须将计算机设置成自动登录状态,以便远程监控操作。前端机器的操作系统主要有Win98、Win2000、Win2003,xp,通过批处理修改注册表实现开机自动登录。为兼容各种系统,程序做了智能检测,根据是否是NT系统选择要执行的代码,并提供设置说明。具体代码如下:

[code3]

@echo off&cls&title自动登录设置&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%系统自动登录设置说明

echo======================================

echo.

echo 1.弹出来"用户账户"窗口,取消"要使用本机,用户必须输入用户名和密码(E)"选项;

echo.

echo 2.单击"应用"按钮,在接下来弹出来的对话框里输入自动登录时用的"用户名"和"密码";

echo.

echo 3.请按任意键进入"用户账户"。&pause>nul

echo.

rundll32 netplwiz,UsersRunDll||control userpasswords2

echo 如果您已完成设置,请按任意键退出。如未成功,退出后,请重新运行本批处理,按说明重新操作一遍。 &pause>nul

exit

:loop2

echo.

echo======================================

echo %s%系统自动登录设置说明

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]

4 禁止优盘、光驱的使用

根据《铁道部超偏载和轨道衡暂行管理办法》规定:“前端机器上严禁安装游戏和其它不必要的软件”,这是为了避免导致系统故障或感染病毒,保证机器正常运行。部分轨道衡前端是有人值守的,但计算机在单机情况下仍出现中毒,后经检查发现,是有人在机器上非法使用优盘所致。为防止他人在前端机器上使用优盘、光驱带来不必要的麻烦,通过批处理,禁止这些功能的使用,需要用到的时候再解禁。以下代码可以实现优盘的禁用或启动功能:

[code4]

@echo off&title优盘设置&color 2f

mode con:cols=50 lines=15

echo禁止优盘请输入[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]

光驱与优盘的禁用和启动原理类似,在此就不将代码一一罗列了。

5 读取确报,输出特定格式文本

在分析过车是否存在误报信息时,需要将过车信息文件与XML格式的确报文件对比,而两种文件的格式很不相同,对比起来很不方便。图1、2是两种格式页面的对比。

图1 监控系统上的过车页面

经过批处理对XML格式报文的修改,输出图3格式的报文,就能很快找到过车信息与确报之间不同之处,迅速发现过车误报的问题。

图2 确报文件页面

图3 确报文件转换之后的页面

确报文件转换代码如下:

[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=转换完毕!请按任意键退出!nul

[/code5]

6 结束语

批处理简单实用,应用环境广阔,尤其适用于文件、系统的操作。只要我们勤于思考、认真研究,就会发现合理地运用批处理,将给我们的超偏载和轨道衡设备的管理、监控和检修工作带来许多方便。

猜你喜欢

优盘批处理代码
恶意批处理文件导致电脑黑屏、反复重启、无响应的原因分析及应对思路
人脑优盘
打造优盘系统维护盘
创世代码
创世代码
创世代码
创世代码
借助批处理 让Cortana变聪明
妙手回春巧修优盘
轻松打造多功能启动型优盘