今天为了帮朋友减轻他的工作量,就帮他写了一个批处理文件。
该批处理文件的功能包含如下:
1.执行批处理文件2.bat时,新建一个文件夹A。该文件夹的文件夹名是根据时间来命名的。
2. 文件夹命名好后,紧跟着就调用批处理文件3.bat,4.bat,5.bat,而且这几个批处理开始的时间,不能相差太多。
3.其中执行3.bat或者4.bat时,也是有要求的。要把3.bat执行的结果B存放到文件夹A中,而且该结果B的命名是根据时分秒来命名的。
为了达到上述的要求,我写的代码如下。同时为了能更清晰的说明问题及实验,我把2.bat的代码贴出来,做一一说明。
2.bat代码内容:
@echo off
md "d:\%date:~0,4%-%date:~5,2%-%date:~8,2%-%time:~0,2%-%time:~3,2%"
start d:\ceshi\3.bat
start d:\ceshi\4.bat
start d:\ceshi\5.bat
exit
其中md "d:\%date:~0,4%-%date:~5,2%-%date:~8,2%-%time:~0,2%-%time:~3,2%"是要在D盘新建一个以时间来命名的文件夹,命名的形式为“2011-05-07-12-44”,表明该文件夹是2011年5月17号12点44分新建的。
start d:\ceshi\3.bat是要调用D盘ceshi文件夹下的3.bat文件。说明其实批处理文件之间的调用,还可以使用call,但是该朋友说,这几个批处理文件开始执行的时间不能相差太多,所以就使用start命令了。同时call命令是在调用该行命令执行结束后,才会调用下一行命令。
下面就把3.bat的代码贴出来,如下:
@echo off
set rp=%time:~0,2%-%time:~3,2%
if exist d:\%date:~0,4%-%date:~5,2%-%date:~8,2%-%time:~0,2%-%time:~3,2% (ping -n 4 baidu.com >d:\%date:~0,4%-%date:~5,2%-%date:~8,2%-%time:~0,2%-%time:~3,2%\%rp%.txt)
exit
其中set rp=%time:~0,2%-%time:~3,2%的意思是设置rp为%time:~0,2%-%time:~3,2%,这个是为了,给3.bat执行的结果命名使用的
if exist d:\%date:~0,4%-%date:~5,2%-%date:~8,2%-%time:~0,2%-%time:~3,2%,这个是判断在D盘是否存在d:\%date:~0,4%-%date:~5,2%-%date:~8,2%-%time:~0,2%-%time:~3,2%这个文件夹,而%date:~0,4%-%date:~5,2%-%date:~8,2%-%time:~0,2%-%time:~3,2%这个文件夹是根据时间来命令的,他不会像在此显示的这个样。如果存在这样一个文件夹,那么就执行ping -n 4 baidu.com >d:\%date:~0,4%-%date:~5,2%-%date:~8,2%-%time:~0,2%-%time:~3,2%\%rp%.txt,并且把执行的结果存放到d:\%date:~0,4%-%date:~5,2%-%date:~8,2%-%time:~0,2%-%time:~3,2%文件夹下,并且把文件是以%rp%为名称的记事本文件。
执行结果的相关截图如下:
未经允许不得转载:烂泥行天下 » 烂泥:批处理文件之间的相互调用问题