window平台使用bat批处理实现进程守护

来源:互联网 发布:如何看自己淘宝等级 编辑:程序博客网 时间:2024/04/29 22:38

window平台使用bat批处理实现进程守护需要用到如下一些知识:

一、批处理实现延时一段时间

Windows下批处理文件没有像Linux一样的Sleep函数进行延时处理,这里有2种较为实用的方法实现延迟:

1、使用WScirpt的sleep功能,精度0.001秒

创建vbs延迟文件,然后在批处理文件中调用,使用WScript的 sleep函数,实现sleep的效果。
实战:
1)创建文件sleep.vbs:

echo WScript.sleep 5000 > sleep.vbs
sleep.vbs 内容如下:
WScript.sleep 5000。
2)在批处理文件中调用,创建示例文件test.bat,内容如下:
复制代码 代码如下:

sc stop OracleOraDb10g_home1TNSListenerWscript sleep.vbssc start OracleOraDb10g_home1TNSListener

2、使用ping 的定时功能,精度1秒

实战:创建示例文件test2.bat,内容如下:
复制代码 代码如下:

ping -n 3 127.0.0.1>nul
说明:3为ping包发送次数,可作为延迟秒数进行使用,需要延迟几秒就设置几。
>nul避免屏幕输出,将输出输入到空设备,因为不需要结果,仅用到其定时功能。

二、批处理实现启动python脚本

bat执行python脚本文件:

:CheckPythonSvrtasklist | find "pythonw.exe" && goto EndSleep || goto StartPythonSvr >nul:StartPythonSvrcd  %_dir%\ITF\start /b pythonw %_pythonSvrProcessCmd% >nulecho "restart" %_pythonSvrProcessName% "on" %time% >> %_logFile%:EndSleep

python.exe与pythonw.exe

pyhton安装目录下有一个”pythonw.exe” 
来简单说说”pythonw.exe”和”python.exe”的区別:
1)”pythonw.exe”执行时不会出现dos窗口 
2)”pythonw.exe”执行时所有stdin和stdout都无效 
3)”pythonw.exe”执行时从原有的sdtin只会得到EOF
所以若要执行一些需要在dos窗口中打印出信息的程序,可以将上述代码中的pythonw改成python即可。

三、批处理bat命令获取当前盘符和当前目录和上级目录

1、批处理命令获取当前盘符和当前目录

%~d0 是当前盘符
%cd% 是当前目录
可以用echo %cd%进行打印测试

2、通过批处理取当前目录的上一级目录

if %cd%==%cd:~,3% echo 当前目录已经是%cd:~,1%盘的根目录!&goto endcd ..set "bd=%cd%"cd ..set "bbd=%cd%"if "%bbd%"=="%bd%" (echo 上一级目录是: %cd:~,1%盘的根目录!) else call echo 上一级目录是: "%%bd:%bbd%\=%%":endpause

四、批处理bat命令启动的进程在后台运行

在执行的命令前加上start /b,比如start /b run.bat。就相当于Linux下的run.sh &

五、让bat文件后台运行

方法一:bat里有隐藏窗口的命令,只需要在代码头部加如下一段代码即可

@echo off if "%1" == "h" goto begin mshta vbscript:createobject("wscript.shell").run("%~nx0 h",0)(window.close)&&exit :begin ::下面是你自己的代码
方法二:在你批处理的相同目录下新建一个记事本,里面输入

DIM objShell set objShell=wscript.createObject("wscript.shell") iReturn=objShell.Run("cmd.exe /C c:\1.bat", 0, TRUE)  
(其中win.bat为你自己的批处理名字,自己改)然后把这个记事本保存为后缀名为.vbe的文件,到时候你只要运行这个vbe文件就达到目的了
可以写的简单点:

Set ws = CreateObject("Wscript.Shell") ws.run "cmd /c c:\1.bat",0  
或者

CreateObject("WScript.Shell").Run "cmd /c c:\1.bat",0 

(这种写法很多杀软报毒, 需要替换参数0) 
最后那个0是指窗口参数,用法为:
0 隐藏窗口并激活另一窗口。 
1 激活并显示一个窗口。若窗口是最小化或最大化,则恢复到其原来的大小和位置。 
2 激活窗口并以最小化显示该窗口。 
3 激活窗口并以最大化显示该窗口。 
4 按窗口最近的大小和位置显示。活动窗口保持活动。 
5 以当前大小和位置激活并显示窗口。 
6 最小化指定窗口并激活按 Z 序排序的下一个顶层窗口。 
7 最小化显示窗口。活动窗口保持活动。 
8 以当前状态显示窗口。活动窗口保持活动。 
9 激活并显示窗口。若窗口是最小化或最大化,则恢复到原来的大小和位置。在还原应用程序的最小化窗口时,应指定该标志。 



0 0