中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 使用批处理简单实现【批量建立文件】
作者:
标题: 使用批处理简单实现【批量建立文件】 上一主题 | 下一主题
ziver
初级用户





积分 20
发帖 4
注册 2006-6-3
状态 离线
『楼 主』:  使用批处理简单实现【批量建立文件】

这个是我发的第一个帖子,只希望能对初学者有些帮助,望高手莫见笑!
共同进步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 将此书赠与我!

参考文章批处理详细教程


文章链接:使用批处理简单实现【批量建立文件】

2006-7-15 22:21
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
chenall
银牌会员




积分 1276
发帖 469
注册 2002-12-23
来自 福建泉州
状态 离线
『第 2 楼』:  

跟据上来的代码来看,你的系统应该是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
2006-7-16 20:48
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (366840202)  编辑帖子  回复  引用回复
IceCrack
中级用户

DOS之友


积分 332
发帖 168
注册 2005-10-6
来自 天涯
状态 离线
『第 3 楼』:  

《MS-DOS6_2批处理文件高级指南》  这个书在哪啊!在他的空间上没有找到

2006-7-16 21:09
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (369525996)  编辑帖子  回复  引用回复
htysm
高级用户




积分 866
发帖 415
注册 2005-12-4
状态 离线
『第 4 楼』:  

2.IF NOT EXIST vc%1_%2.CPP 这句我想应该改成
IF NOT EXIST vc%1_%%a.CPP 才符合要求.

  高手!

2006-7-18 12:58
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: