首先介绍批处理文件最常用的几个命令
@echo off 不显示后续命令行及当前命令行
dir c:\*.* >a.txt 将c盘文件列表写入a.txt
call c:\ucdos\ucdos.bat 调用ucdos
echo 你好 显示"你好"
pause 暂停,等待按键继续
rem 准备运行wps 注释:准备运行wps
cd ucdos 进入ucdos目录
wps 运行wps
脚本一:通过bat脚本启动服务
rem *******************************Code Start*****************************
@echo off
start /d "E:\rongpingtai\apache-activemq-5.14.1-bin\apache-activemq-5.14.1\bin\win64\" activemq.bat
start /d "E:\rongpingtai\reids\" redisServer.bat rem : “/d” 指定启动目录
start /d "E:\rongpingtai\apache-tomcat-7.0.81\bin\" startup.bat
@echo on
rem ***************************Code End*****************************
启动.exe服务,如启动parseServer.exe,窗口名称显示parseServer
@title parseServer
parseServer
pause
脚本二:windows下监控并重启某个进程
例如监控chrome.exe进程,一旦发现进程关闭则启动该进程
脚本代码如下:
:RESTART
tasklist /FI "username eq Administrator" | find /C "chrome.exe" > temp.txt
set /p num= < temp.txt
del /F temp.txt
echo %num%
if "%num%" == "0" start /D "D:\Chrome\Bin\" chrome.exe
ping -n 10 -w 2000 0.0.0.1 > temp.txt
del /F temp.txt
goto RESTART
要是监控其他进程,红字部分都需要改下
脚本三:windows下监控进程自动重启
监控redis
@echo off
set Program="redis-server.exe"
tasklist -v | findstr %Program% > NUL
if ErrorLevel 1 (
echo "进程不存在" >> D:\server\redis_log\log.txt
echo %date%+ %time% >> D:\server\redis_log\log.txt
d:
cd server\redis
redis-server.exe redis.conf
) else (
echo "进程存在"
)
脚本四:bat批处理文件同时打多个cmd窗口执行其他bat命令
start 用来启动一个应用
有时候我们想用一个批处理同时启动其他多个不同目录的BAT,脚本如下
@echo off
start /D "D:\Program Files\redis\test1" start.bat
start /D "D:\Program Files\redis\test2" query.bat
start /D "D:\Program Files\redis\test3" update.bat
start /D "D:\Program Files\redis\test4" insert.bat
start /D "D:\Program Files\redis\test5" select.bat
start /D "D:\Program Files\redis\test6" delete.bat
参数D 后面的参数表示被调用命令的所在目录。
脚本五:Windows下交叉编译Linux 64位可执行程序(golang)
rem @echo off
set GOARCH=amd64
set GOOS=linux
set TARGETEXT=
set OUTPUTDIR=bin\
mkdir %OUTPUTDIR%
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set TARGETDIR=%OUTPUTDIR%\%GOOS%-%GOARCH%
mkdir %TARGETDIR%
for %%i in ("%~dp0\.") do (
set CurDir=%%~ni
)
set TARGET=bin\%CurDir%-%GOOS%-%GOARCH%%TARGETEXT%
set cnf=%CurDir%.example
echo building %TARGET% ...
go build -o %TARGET%
copy %TARGET% %TARGETDIR%
copy %cnf% %TARGETDIR%
echo "OK"
pause
脚本六:在windows下.bat每5分钟运行一次python文件
@echo off
set INTERVAL = 300
timeout %INTERVAL%
:Again
echo Called000000000000000
python C:/test.py
timeout %INTERVAL%
goto Again
同理可以每隔周期时间运行某个程序、服务、脚本等
@echo off
set INTERVAL = 3000
timeout %INTERVAL%
:Again
echo test
start /D "C:\Users\wade\Desktop" test.bat
timeout %INTERVAL%
goto Again
脚本七:.bat中for循环用法详解
for语句的基本要素都有些什么:
下面来看一个Windows bat脚本的demo(记为demo1):
@echo off
for %%I in (ABC) do echo %%I
pause
保存为.bat文件(批处理文件)并执行,将会在弹出的批处理窗口中看到这样的信息:
稍加修改
@echo off
for %%I in (A,B,C) do echo %%I
pause
保存为.bat文件(批处理文件)并执行,将会在弹出的批处理窗口中看到这样的信息:
1)搜索当前目录下有哪些文件?
@echo off
for %%i in (*.*) do echo "%%i"
pause
2)搜索当前目录下所有的文本文件?
@echo off
for %%i in (*.txt) do echo "%%i"
pause