批处理文件之间的相互调用问题

时间:2024-03-24 22:48:44

今天为了帮朋友减轻他的工作量,就帮他写了一个批处理文件。

该批处理文件的功能包含如下:

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%为名称的记事本文件。

执行结果的相关截图如下:

批处理文件之间的相互调用问题批处理文件之间的相互调用问题