Windows批处理常用脚本
最近一个项目,由于在应用服务器上采集的数据量很大,不能实时的完成所有数据的数据库写入。所以项目组采取应用服务器采集的数据以文本文件形式存在本地,然后拷贝到数据库服务器,再执行数据库导入脚本,从而实现数据入库功能。
整个过程如果由人工完成,将会非常耗时耗力,所以我们采用批处理脚本与JAVA小程序结合的方式,先在应用服务器将采集数据定时打包,并传送到数据库服务器;在数据库服务器端,用定时批处理程序解压数据包,并将其导入数据库中。
本文将该应用中相关的脚本进行整理。
1. echo
echo on // 显示命令行 echo off // 不显示命令行 echo // 显示当前 echo 的状态(on or off) echo Start // 将"Start"字符串输出到控制台 echo Start > d:\test.txt // 将"Start"字符串写入 text.txt 文件中,已有内容被覆盖 echo Start >> d:\test.txt // 将"Start"字符串追加到 text.txt 文件的尾部
2. 注释 (rem)
rem Environment Variable Prerequisites // 使用 rem 关键字进行行注释
3. 跳转 (goto)
如果变量 JRE_HOME 不为空,则跳转至 gotJreHome 标志处执行,否则将依次执行接下来的语句。
// 使用 goto 语句实现逻辑跳转 if not "%JRE_HOME%" == "" goto gotJreHome set "JRE_HOME=%JAVA_HOME%" :gotJreHome echo Got JRE Home
4. 变量
// 变量定义 set "DB_SERVER_IP=192.168.1.104" set "WINRAR_HOME=C:\Program Files\WinRAR" // 如果变量中有空格,则用引号引起来 // 变量获取 %WINRAR_HOME% // 这样便可获取到 WINRAR_HOME 的值 // 环境变量,系统中配置的环境变量可以在批处理程序中获取 set "JRE_HOME=%JAVA_HOME%" // 获取环境变量 JAVA_HOME 的值,并将其赋给变量 JRE_HOME
5. for
// 1. 遍历文件名 for /f "delims=" %%i in ('dir %SRC_FILE_DIRS%\*.rar /b') do ( echo %%i )
(1)/f : 用于处理文件和命令的输出结果
(2)%%i : 遍历变量,在 cmd 中请使用 %i
(3)dir %SRC_FILE_DIRS%\*.rar /b : 列出目录 %SRC_FILE_DIRS%\ 下扩展名为 .rar 的所有文件名
// 2. 获取环境变量 PATH 的各个值 for /f "delims=; tokens=1-24" %%a in ("%PATH%") do ( echo %%a echo %%b echo %%c echo %%d echo %%e )(1)"delims=; tokens=1-24" :以 ";" 为分隔符,截取从第 1 个 至 第 24 个的所有字符串
6. 程序调用
// 使用 WinRAR 打包文件 set "_RUNWinRAR=C:\Program Files\WinRAR\WinRAR.exe" "%_RUNWinRAR%" a -ep1 -o+ -inul -ibck %ROOT_DIR%\file.war src.txt
a :将 src.txt 添加至 file.war 压缩文件
-ep1 : 从名称中排除基本目录,如: d:\data\src.txt,将排除 d:\data\ 字符串,否则,压缩后的文 件名将是 d:\data\src.txt
-o+ : 覆盖已存在文件
-inul : 禁用所有消息
-ibck : 以后台模式运行
// 调用 osql 命令执行 sql 脚本文件 osql -S %DB_SERVER_IP% -U %DB_USER_NAME% -P %DB_PASSWORD% -d %DB_NAME% -i script.sql -o log.txt
-S : 数据库服务器 IP 地址
-U : 数据库登录名
-P : 数据库登录密码
-d : 数据库名称
-i : sql脚本源文件
-o : 日志输出文件
// 使用 FileBus 传输文件 set %_RUNFileBus=d:\filebus\FileBus.exe% %_RUNFileBus% %SRC_FILE_DIR%\src.txt %DES_IP% %DES_PORT%
(1)%SRC_FILE_DIR%\src.txt : 需要传送的文件路径
(2)%DES_IP% : 目的机器的 IP 地址
(3)%DES_PORT% : 目的机器的接收端口,默认为 8807
(4)需在目的机器打开 filebus 程序
7. 文件是否存在
// if exist / if not exist: 判断文件是否存在 if exist "%EXEC_HOME%\bin\exec.bat" goto okHome if not exist "%EXEC_HOME%\bin\exec.bat" goto notOkHome
上一篇: 核算系统-计息、还款规则
下一篇: NIO学习