一些windows常用.bat批处理脚本总结

首先介绍批处理文件最常用的几个命令       

              @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进程,一旦发现进程关闭则启动该进程

一些windows常用.bat批处理脚本总结_第1张图片

脚本代码如下:

: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语句的基本要素都有些什么:

  • for、in和do是for语句的关键字,它们三个缺一不可;
  • %%I是for语句中对形式变量的引用,即使变量l在do后的语句中没有参与语句的执行,也是必须出现的;
  • in之后,do之前的括号不能省略;
  • command1表示字符串或变量,command2表示字符串、变量或命令语句;

下面来看一个Windows bat脚本的demo(记为demo1):

@echo off
for  %%I in (ABC) do echo %%I
pause  

保存为.bat文件(批处理文件)并执行,将会在弹出的批处理窗口中看到这样的信息:
一些windows常用.bat批处理脚本总结_第2张图片

稍加修改

@echo off
for  %%I in (A,B,C) do echo %%I
pause

保存为.bat文件(批处理文件)并执行,将会在弹出的批处理窗口中看到这样的信息:

一些windows常用.bat批处理脚本总结_第3张图片

1)搜索当前目录下有哪些文件?

@echo off
for %%i in (*.*) do echo "%%i"
pause

2)搜索当前目录下所有的文本文件?

@echo off
for %%i in (*.txt) do echo "%%i"
pause

你可能感兴趣的:(一些windows常用.bat批处理脚本总结)