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

简介:
今天为了帮朋友减轻他的工作量,就帮他写了一个批处理文件。
       该批处理文件的功能包含如下:
       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%为名称的记事本文件。
         执行结果的相关截图如下:
clip_image002 clip_image004

本文转自 烂泥行天下 51CTO博客,原文链接:http://blog.51cto.com/ilanni/561069


相关文章
‘you-get‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件
‘you-get‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件
309 0
|
4月前
|
Windows
【计算机网络】已解决:“‘ping‘ 不是内部或外部命令,也不是可运行的程序或批处理文件”报错
【计算机网络】已解决:“‘ping‘ 不是内部或外部命令,也不是可运行的程序或批处理文件”报错
457 0
|
6月前
|
存储 编译器 C语言
C与C++之间相互调用的基本方法
C与C++之间相互调用的基本方法
126 1
|
编译器 测试技术 C语言
C与C++之间的相互调用及函数区别
最近项目需要使用google test(以下简称为gtest)作为单元测试框架,但是项目本身过于庞大,main函数无从找起,需要将gtest框架编译成静态库使用。因为项目本身是通过纯c语言编写,而gtest则是一个c++编写的测试框架,其中必然涉及c与c++之间的相互调用。 注意,本文的前提是,c代码采用gcc等c语言编译器编译c代码,采用g++等c++编译器编译c++代码,如果c和c++代码统一使用g++编译,大部分情况是可以实现两者代码相互调用的。以下为踩坑过程的总结o_O||。 c与c++的函数区别 要了解两者之间如何实现相互调用,必须先了解c与c++之间的函数有什么不同。 c+
127 0
|
JSON 小程序 JavaScript
【小程序】宿主环境之通信模型和运行机制
【小程序】宿主环境之通信模型和运行机制
101 0
【小程序】宿主环境之通信模型和运行机制
|
C++
三个类之间的相互调用实现
由来:在项目开发的时候,定义了三个核心类(ClassA,ClassB, ClassC),三个类之间存在调用关系如下:ClassC是管理类,需要调用ClassA, ClassB的接口;同时作为被管理类,ClassA, ClassB需要又需要调用ClassC的接口。
254 0
三个类之间的相互调用实现
|
IDE 开发工具 C语言
成功解决''g++' 不是内部或外部命令,也不是可运行的程序 或批处理文件
成功解决''g++' 不是内部或外部命令,也不是可运行的程序 或批处理文件
|
API C++ Windows
C++中运行外部程序
关于三个SDK函数: WinExec, ShellExecute,CreateProcess 的其他注意事项: 【1】定义头文件 必须定义以下两个头文件: #include  // 可替换为 windows.h #include  如果定义了头文件 #include 的话就不必定义 #include 了。
1648 0