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 个的所有字符串
    (2) %%a, %%b, %%c : 按 ASC 码加 1 方式增加依次获取第 1 个,第 2 个 ... 第 n 个变量

  

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

 

 

 

你可能感兴趣的:(echo,for,WinRAR,批处理,osql)