BAT批处理现学现用

上篇说的是本人在实现报表自动化过程中用到的VBS知识,这篇我打算用来总结在此过程中用到的批处理知识。

批处理里面如何实现延时?

rem 巧妙地利用windows自带的ping命令来达到延时的目的
ping.exe /n 1 127.1>nul
批处理的用户输入校验模块 [这里是校验日期,格式:yyyymm]
@echo off
:input_module
echo Please enter date here:
set /p yyyymm=^<format:yyyymm^> (example:201301):
echo %yyyymm%|findstr ^[1-2][0-9][0-9][0-9][0-1][0-9]$>nul
if not %errorlevel%==0 goto input_module
echo ^[*INFO*^]: 
ping.exe /n 1 127.1>nul
对以上用户输入做操作:字符串截取、字符串拼接的用法:
set yyyymm = %yyyymm:~0,6%
if %yyyymm:~4,2% == 01 set month_display=JAN%yyyymm:~0,4%
批处理中用户名、密码输入模块
rem  用户输入ftpUserIDftpPass模块
echo ^[*INFO*^]: Please enter ID & Password
ping.exe /n 1 127.1>nul
set /p ftpUser=^[*INFO*^]: Enter TSO ID:
批处理中著名的实现隐藏用户输入密码的方法
rem  批处理里面很著名的隐藏输入不显示的方法(By德国人HerbertKleebauer)
echo hP1X500P[PZBBBfh#b##fXf-V@`$fPf]f3/f1/5++u5x>in.com
set /p ftpPass=^[*INFO*^]: Enter your password:<nul
for /f "tokens=*" %%i in ('in.com') do set ftpPass=%%i
del in.com
批处理中实现执行批量ftp命令的方法
rem 设置远程ftpip
set ftpIP=xxx.xxx.xxx.xxx 
rem 设置本地目录为当前脚本所在目录,用%~dp0表示
set LocalFolder=%~dp0
rem 指定临时ftp指令文件,将job送往mainframe JES2队列运行,并且提前删除以下两个dataset
set ftpFile=%temp%\TempFTP.txt
  >"%ftpFile%" (
    echo open %ftpIP%
    echo user %ftpUser%
    echo %ftpPass%    
    echo lcd "%LocalFolder%"
    echo ascii
    echo quote site filetype=jes
    echo put my_jes2_job.txt    
    echo disconnect
    echo bye
  )
rem  调用ftp.exe执行上述ftp命令,来完成将my_jes2_job送入到mainframe执行的操作
start c:\windows\system32\ftp.exe -n -s:"%ftpFile%" 
批处理中判断文件是否为空的方法,以及goto分支的用法
for /f "delims=" %%i in ('dir /b my_test_source.txt') do (
if %%~zi equ 0  (   
  goto empty_source      rem goto process empty
) else (
  goto not_empty_source  rem goto process not empty
  )
 )
 :empty_source 
   do something here
 :not_empty_source
   do something here
批处理中调用msgbox显示消息框的方法
rem 利用mshta,消息框里面换行用^&chr(13)^
mshta vbscript:msgbox("Empty !"^&chr(13)^&^chr(13)^&"Please Check!",50,"Error")(window.close)
批处理中拷贝文件的方法
copy A.txt B.txt>nul
批处理中执行vbs脚本的方法
rem ftpUseryyyymm是传递给vbs的参数
start wscript process_not_empty.vbs  %ftpUser%  %yyyymm%

Comments !