中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-01 20:13
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 使用批处理简单实现【批量建立文件】 查看 952 回复 3
楼 主 使用批处理简单实现【批量建立文件】 发表于 2006-07-15 22:21 ·  中国 江苏 苏州 电信
初级用户
积分 20
发帖 4
注册 2006-06-03 10:58
20年会员
UID 56478
状态 离线
这个是我发的第一个帖子,只希望能对初学者有些帮助,望高手莫见笑!
共同进步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命令来实现,即用一个空的文件作为被拷贝的源文件来产生一系列的目标文件

具体实现:
首先在下建立了一个名为null.nul的空文件
在下建立了一个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 /L %variable IN (start,step,end) DO command 

该集表示以增量形式从开始到结束的一个数字序列。
因此,(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 将此书赠与我!

参考文章批处理详细教程


文章链接:使用批处理简单实现【批量建立文件】
2 发表于 2006-07-16 20:48 ·  中国 福建 泉州 石狮市
银牌会员
★★★
积分 1,276
发帖 469
注册 2002-12-23 13:00
23年会员
UID 586
性别 男
来自 福建泉州
状态 离线
跟据上来的代码来看,你的系统应该是2000以上的系统.
1.如何在DOS中建立一个空文件?
可以使用如下命令.
copy nul file.ext
2.IF NOT EXIST vc%1_%2.CPP 这句我想应该改成
IF NOT EXIST vc%1_%%a.CPP 才符合要求.
QQ:366840202
http://chenall.net
3 发表于 2006-07-16 21:09 ·  中国 辽宁 大连 教育网
中级用户
★★
DOS之友
积分 332
发帖 168
注册 2005-10-06 00:00
20年会员
UID 43171
性别 男
来自 天涯
状态 离线
《MS-DOS6_2批处理文件高级指南》 这个书在哪啊!在他的空间上没有找到
4 发表于 2006-07-18 12:58 ·  中国 安徽 芜湖 电信
高级用户
★★★
积分 866
发帖 415
注册 2005-12-04 11:19
20年会员
UID 46459
状态 离线
2.IF NOT EXIST vc%1_%2.CPP 这句我想应该改成
IF NOT EXIST vc%1_%%a.CPP 才符合要求.

高手!
论坛跳转: