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

本文介绍在Windows环境下使用批处理文件实现进程守护、启动Python脚本、获取目录信息及后台运行等实用技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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_home1TNSListener
Wscript sleep.vbs
sc start OracleOraDb10g_home1TNSListener

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

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

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

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

bat执行python脚本文件:

:CheckPythonSvr
tasklist | find "pythonw.exe" && goto EndSleep || goto StartPythonSvr >nul
:StartPythonSvr
cd  %_dir%\ITF\
start /b pythonw %_pythonSvrProcessCmd% >nul
echo "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 end
cd ..
set "bd=%cd%"
cd ..
set "bbd=%cd%"
if "%bbd%"=="%bd%" (echo 上一级目录是: %cd:~,1%盘的根目录!
) else call echo 上一级目录是: "%%bd:%bbd%\=%%"
:end
pause

四、批处理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 激活并显示窗口。若窗口是最小化或最大化,则恢复到原来的大小和位置。在还原应用程序的最小化窗口时,应指定该标志。 



### 如何使用或修改 Tomcat `catalina.bat` 文件 #### 使用 Catalina.bat 执行管理命令 `catalina.bat` 是一个功能全面的批处理脚本,用于执行多种 Tomcat 服务器的管理任务。常见的命令包括: - **启动 Tomcat** ```batch catalina.bat start ``` - **停止 Tomcat** ```batch catalina.bat stop ``` - **以非守护进程模式运行 Tomcat** ```batch catalina.bat run ``` - **测试配置文件是否正确** ```batch catalina.bat configtest ``` - **显示 Tomcat 版本信息** ```batch catalina.bat version ``` 上述命令提供了基本的操作方式来控制和查询 Tomcat 实例的状态[^1]。 #### 修改 JVM 内存设置 为了调整 Java 虚拟机 (JVM) 的内存分配给 Tomcat,在 `catalina.bat` 中可以找到并编辑以下部分: ```batch set JAVA_OPTS=-Xms512m -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=512m ``` 这段代码设置了初始堆大小 (`-Xms`) 和最大堆大小 (`-Xmx`) ,以及永久代空间(`-XX:PermSize`, `-XX:MaxPermSize`) 。根据实际需求更改数值可优化性能表现[^3]。 #### 更改窗口标题 如果希望自定义当通过 `run` 参数启动时所打开命令提示符窗口的标题,则可以在同一文件内添加如下行: ```batch title My Customized Tomcat Window Title ``` 这使得每次启动时都会带有指定的文字作为窗口名称。 #### 处理 CLASSPATH 变量 值得注意的是,默认情况下标准的 Tomcat 启动脚本会忽略系统的 CLASSPATH 环境变量,并自行构建 System 类加载器所需的资源列表。因此,任何试图依赖外部设定好的 CLASSPATH 来影响 Tomcat 行为的做法都将是徒劳无功的;相反应当直接在 `catalina.bat` 或者关联的 `.properties` 文件里做相应配置[^2]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值