『楼 主』:
使用批处理简单实现【批量建立文件】
这个是我发的第一个帖子,只希望能对初学者有些帮助,望高手莫见笑!
共同进步ing...
今天写了不少代码,总是重复的建立一下.cpp文件。
于是想到用前些天学习的批处理来实现这个重复度较高的过程吧...
学而用之...
事出有因:
今天建立了一些这样的文件
vc1_1.cpp vc1_2.cpp vc2_1.cpp vc2_2.cpp vc2_3.cpp...
当然下次我还要建立一些vc3_1.cpp.....
N多的无聊过程岂是我能容忍
思路分析:
首先想到的是如何在DOS中建立一个文件,而不是文件夹
而DOS中并没有能直接建立文件的命令(也许是我没有学到吧),可以考虑edit filename.ext但每次都会打开DOS文件编辑窗口,所以行不通。
于是想到用COPY命令来实现,即用一个空的文件作为被拷贝的源文件来产生一系列的目标文件
具体实现:
首先在[D:\MyProjects\]下建立了一个名为null.nul的空文件
在[D:\MyProjects\vc\]下建立了一个makefill.bat的批处理文件以实现<b>批量建立文件</b>
makefill.bat的代码如下示
@ECHO OFF
FOR /L %%a IN (1,1,%2) DO IF NOT EXIST vc%1_%2.CPP COPY D:\MYPROJECTS\NULL.NUL vc%1_%%a.cpp 这里用到了@ECHO OFF隐蔽DOS下命令的显示
代码解释:
只用到了一条命令实现了预想的功能
FOR /L %%a IN (1,1,%2) DO IF NOT EXIST vc%1_%2.CPP COPY D:\MYPROJECTS\NULL.NUL vc%1_%%a.cpp makefile.bat 用到两个命令行参数%1和%2分别对应产生的文件中的两个数字
在DOS下输入[for /?]我们看到一下一段帮助文档
FOR /L %variable IN (start,step,end) DO command [command-parameters]
该集表示以增量形式从开始到结束的一个数字序列。
因此,(1,1,5) 将产生序列 1 2 3 4 5,(5,-1,1) 将产生
序列 (5 4 3 2 1)。 这个正是实现文件名中第二个数字的方法
语句
IF NOT EXIST vc%1_%2.CPP COPY D:\MYPROJECTS\NULL.NUL vc%1_%%a.cpp 用以判断所要建立文件的存在性
如果文件不存在,则建立…………这样避免覆盖已经存在的文件
实际应用:
makefile.bat所在的文件夹输入makefile 4 2
D:\MyProjects\vc>FOR /L %a IN (1 1 2) DO IF NOT EXIST vc4_2.CPP COPY D:\MYPROJECTS\NULL.NUL vc4_%a.cpp
D:\MyProjects\vc>IF NOT EXIST vc4_2.CPP COPY D:\MYPROJECTS\NULL.NUL vc4_1.cpp
已复制 1 个文件。
D:\MyProjects\vc>IF NOT EXIST vc4_2.CPP COPY D:\MYPROJECTS\NULL.NUL vc4_2.cpp
已复制 1 个文件。 小节:
很简单的一个bat文件,没有什么大的技术含量
只是想说明一点,学到的一些东西要能灵活应用才好,要能解决一些碰到的问题
不然学习编程意义何在?
对于学习批处理推荐一本书《MS-DOS6_2批处理文件高级指南》
感谢中国DOS联盟的朋友 qb45 将此书赠与我!
参考文章批处理详细教程
文章链接:使用批处理简单实现【批量建立文件】
|