Re stonelei:
1,关于日期的获取,我在另一篇帖子里已做陈述,但是考虑到DOS6.22的DATE使用了四位数的年份值,再加上你不想丢失后两位数的要求,再补充一个方法,那就是可以截获DOS下文件的创建和修改日期,大体的代码如下:
echo if not == goto end>getdate.bat
echo set date=%%3>>getdate.bat
dir getdate.bat | find "getdate bat" /i >>getdate.bat
echo :end>>getdate.bat
for %%c in (call del) do %%c getdate.bat
2,至于目录数目的判定,可以使用文件列表的变形来操作,主要是使用dir和find,大体代码如下:
dir c:\\directory /ad /od /b | find "-0" > datedir.lst
fc datedir.lst nul /n | find "11: ">delcall.bat
echo deltree %%1 /y >11.bat
for %%c in (call del) do %%c delcall.bat
for %%f in (11.bat datedir.lst) do del %%f
3,关于软盘测试,其实可以使用简单的debug脚本来调用dos int21功能实现,这样就可以避免引入第三方程序来解决问题,适合只具有标准DOS配置的环境的。但如果你的条件允许,且对第三方程序并不反感,则可以忽略此一细节。
4,自以上叙述,你应该可以明白这个批处理完全可以用一个文件来实现。事实上,任何多个批处理能够实现的问题都可以通过单个批处理来实现,但是有时出于设计原则的考虑,需要分化出几个模块。
另外,以上的代码部分只是一种基于经验上的脱机设计,并未在DOS6环境中实际测试,你可以根据自己的需要和出现的问题,随时进行调整,并不具有任何形式的版权。
Re Climbing:
刚刚见到你的回复,故在编辑此贴时顺便回复。
find.exe 是从DOS5就被打包一同安装的管道专用外部命令,同样的命令还有fc.exe和more.exe,你的DOS6.22也许不太完整。另外,edlin和debug也属于比较常用的管道命令,可惜edlin在dos6以后被取消,导致批处理对文本串的控制能力大为削弱,但是它在nt系列中却始终存在。
日期格式问题,曾经是我在使用DOS6时很头疼的一个问题,因为不同的country设置,日期格式相差很大,对我的某些批处理程序的通用性带来很大的挑战。你机器上的表现,可能是虚拟机虚拟不彻底的原因,也可能是dos6从不同版本的bios中取日期得到结果不同,或者你的dos6.22并未使用原始配置。
Last edited by willsort on 2005-10-13 at 10:29 ]