批文件在我们做自动化的过程中应用十分广泛,可以自动生产我们想要的一些数据,但是由于批文件中dos命令不是十分灵活,实现的功能也是有限。

一、批文件调用:
@echo off echo的作用:显示的作用,相当于打印的作用。如果python中的print函数。off即是不显示每一行运行的过程。
1.如:muke.bat文件内容,不用 off,然后再去调用它。那么

@echo

:main
echo F1
call :F1
rem call :F2

:F1
echo F1
echo F2
exit /b 0

:F2
echo F3
exit /b 0

:ERR
echo err
exit /b 1

结果:

bat echo 打印变量的值_dos

2.如:muke.bat文件内容,用 @echo off,然后再去调用它。那么

bat echo 打印变量的值_错误提示_02

3.分析:
整个程序是自上而下执行的,即是先执行:main方法—>输出 F1—>调用F1函数—>输出F1,F2,退出F1调用—>再回到main方法,main方法因为没有退出:exit /b 0,继续执行下面代码F1—>输出F1,F2—>F1函数包含exit /b 0,所以程序执行完毕!共输出F1,F1,F2,F1,F2。

二、1.实战调用:代码放在File.bat结尾的文件。

@echo off
rem 下面两行的作用是 启用"延迟环境变量扩展",这条命令放在一行,表示其为一条完整的命令。
setlocal enabledelayedexpansion
color

rem file 文件路径 设置一个inFile的全局变量,第一个变量即为%1,以此内推。判断输入参数是否为空,IF判断,如果参数为空返回ERR错误提示。
set inFile=%1
if "%inFile%"=="" goto :ERR
rem STT & HUU
set Ven=%2
if "%Ven%"=="" goto :ERR
rem 1gg04 
set Branch=%3
if "%Branch%"=="" goto :ERR
rem Account
set WinNo=%4
if "%WinNo%"=="" goto :ERR
rem Week: MON TUE WED THU FRI SAT SUN
set WeekNO=%5
if "%WeekNO%"=="" goto :ERR
rem outFile 生成文件的路径变量。然后每次启动bat文件删除上次生成的outFile文件。
set outFile=%6
if "%outFile%"=="" goto :ERR
del !outFile!

rem 先打印 echo 后面的内容,引用变量:!WinNo!或%WinNo%引用。执行到第三行,
rem 调用ReadRunList函数,执行函数里面的内容。exit /b 0 最后正常退出运行的程序,不关闭dos窗口。>>!outFile!即是更新保存至文件变量outFile中。
:Main
echo signon(!Branch!) "!WinNo!" "123456" >>!outFile!
echo accacc(!Branch!) "!WinNo!" 123456 >>!outFile!
call :ReadRunList
echo accrel(!Branch!) "!WinNo!" 123456 >>!outFile!
echo signoff(!Branch!) >>!outFile!
exit /b 0

rem 用for循环变量文件inFile里面的所有内容,delims=tbl键的长度。调用StrHandle函数,并取变量a的值为从第一行开始到倒数第一行的值。(0行开始,根据下标)
:ReadRunList
for /f "tokens=1,4 delims=	" %%i in (!inFile!) do (
set inStr=%%i
set a="racebet(!Branch!) !Ven! !WeekNO! !inStr!"
call :StrHandle !a!
) 
exit /b 0

:StrHandle
set a=%1
echo !a:~1,-1!>>!outFile!
exit /b 0

rem exit /b 1 最后异常退出运行的程序,不关闭dos窗口。
:ERR
color CE
echo ================================================
echo ERROR:Please check input para.
echo Examples: File.bat (inFile路径文件) STT 1gg04 100005 MON (生成的路径文件)
echo ================================================
exit /b 1

2.2.实战调用:调用上面的批文件。用另外一个批文件调用。

@echo off

rem  调用1.1的bat文件,是根据inFile文件内容重新生成某些路径的文件。
set inFile=文件路径
call File.bat %inFile% STT 1gg04 100005 MON 1.txt
call File.bat %inFile% STT 1gg04 100005 MON 2.txt
call File.bat %inFile% STT 1gg04 100005 MON 3.txt
call File.bat %inFile% STT 1gg04 100005 MON 4.txt
call File.bat %inFile% STT 1gg04 100005 MON 5.txt
call File.bat %inFile% STT 1gg04 100005 MON 6.txt