中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 不用LMOD,纯DOS下批处理可以建立日期目录吗?
作者:
标题: 不用LMOD,纯DOS下批处理可以建立日期目录吗? 上一主题 | 下一主题
stonelei
初级用户




积分 172
发帖 14
注册 2004-8-25
状态 离线
『楼 主』:  不用LMOD,纯DOS下批处理可以建立日期目录吗?

前几天Climbing朋友帮编了一个备份升级的批处理,但调用了几个实用小工具,
现在很想用一个批处理而不调用来完成.进行升级,不知是否算是异想天开.
首要问题就是如何建立以当前日期命名的目录名,例如2004-09-01日就自动建立0901的目录.
我搜索了论坛的所有贴子,但不是不能建立一个完整的目录,就是要调用LMOD,
因为DOS下不能超过8位数的文件名,而DOS622的日期格式是 09-01-2004 这样的.
如果按前面的说话,不用调用,批处理可以建立这样的目录吗? 0901
是否批处理真的没办法实现这样的功能?因为我见到论坛关于日期目录的讨论也不少,就是
没有真正用批处理完成一个完美的日期录建立的.
谢谢高手提出解决方案.




2004-8-28 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Climbing
铂金会员

网络独行侠


积分 6962
发帖 2753
注册 2003-4-16
来自 河北保定
状态 离线
『第 2 楼』:  

不使用第三方工具,纯粹使用DOS 6.22的内部命令,这个基本上比较难。至少我不知道如何去做,如果willsort也没有好办法,估计就真的不太可能了。



偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
2004-8-28 00:00
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (653668)  编辑帖子  回复  引用回复
stonelei
初级用户




积分 172
发帖 14
注册 2004-8-25
状态 离线
『第 3 楼』:  

我现在有一个想法,就是把当前日期保存到临时文件中:echo %date%>a.txt然后再取a.txt 的某部分字符(日期)成为变量,再根据变量建立目录.再删除临时文件 a.txt这样的构思不知可行否?

2004-8-28 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
stonelei
初级用户




积分 172
发帖 14
注册 2004-8-25
状态 离线
『第 4 楼』:  

在论坛上http://dos.e-stone.cn/dosbbs/dispbbs.asp?boardID=12&ID=4487&page=72
找到了个QBASIC的,但不用BAS保存,不知可不可以直接编译成EXE文件执行,即
我想要的结果是只用一个文件解决问题.

10 F0$="1.txt" :rem --------------------- 你要备份的文件名
20 P0$="C:\abc\":rem -------------------- 你原来的目录名
30 P1$="C:\abc\":rem -------------------- 你要放备份文件的目录名(这里是相同)
40 M$=MID$(DATE$,1,2):rem --------------- 取月
50 D$=MID$(DATE$,4,2):rem --------------- 取日
60 Y$=MID$(DATE$,7,4):rem --------------- 取年
70 S$=Y$+M$+D$:rem ---------------------- 按年、月、日生成备份文件
80 F1$=S$+".txt":rem -------------------- 给备份文件名加上扩展名(这里是.txt)
90 C$="copy "+P0$+F0$+" "+P1$+F1$:rem --- 生成DOS命令串
100 SHELL C$:rem ------------------------ 用SHELL来执行DOS命令串
110 END

用Sav-DAY.BAS文件名存盘

用的时候将下列命令加到批处里就可以了!
BASIC.EXE Sav-DAY.BAS


2004-8-28 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
autoit
系统支持




积分 904
发帖 339
注册 2002-10-10
来自 厦门
状态 离线
『第 5 楼』:  

for /f好象可以分离日期的...



joomla! Autoit!
2004-8-29 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
stonelei
初级用户




积分 172
发帖 14
注册 2004-8-25
状态 离线
『第 6 楼』:  

还有朋友有更好的解决方法吗?难道在DOS622下靠BAT真的不能生日一个完美的日期目录?[em06]

2004-8-30 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
stonelei
初级用户




积分 172
发帖 14
注册 2004-8-25
状态 离线
『第 7 楼』:  

查过以前 WILLSOFT的贴子,其中有一例很相似,但我看不太懂.请哪位高手帮忙解析一下好吗?@echo off
echo set time=%%3>current.bat  
echo.|time>setclock.bat
call setclock.bat
echo set week=%%3>current.bat
echo set date=%%4>>current.bat
echo.|date>setclock.bat
call setclock.bat
del current.bat
del setclock.bat


2004-8-30 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


积分 4432
发帖 1512
注册 2002-10-18
状态 离线
『第 8 楼』:  

To stonelei :
  这个程序基本可以满足你的要求,在win98Command和DOS7下测试可以生成09-15-2004的目录名,估计在DOS6下应该生成类似09-15-04的名字。
  原程序是一个比较通用的命令行下获取时间变量的程序,我当时是在DOS6.22下编写并测试通过的。但它不适用于中文化的DOS系统或者命令行环境,NT系列的CMD.EXE也因此无法使用,在其命令行环境中缺省设置了时间变量,所以也用不着此程序。
  至于解析,但愿以下内容对你有所帮助。
@echo off
echo set time=%%3>current.bat
rem 将文本set time=%3输出到current.bat中,准备作为命令调用。

echo.|time>setclock.bat
rem 将当前时间信息输出到setclock.bat中
rem echo.输出一个结束time需要的回车符,由管道符号"|"传给time
rem setclock的文本内容第一行类似于 Current time is   22:00:02.41
rem 也准备作为命令调用,第二行执行不到可以不用管

call setclock.bat
rem 调用setclock后返回(因为有Call)
rem setclock的执行中再调用current.bat而不返回(因为没有Call),所以第二行被跳过
rem 而time is  22:00:02.41 则成为了current执行时的命令行参数
rem 而current.bat的 set time=%3 意为将第三个参数赋给变量time,正是22:00:02.41
rem 将程序命令输出的文本信息作为再次作为程序命令执行,是这个批处理用到的最大的技巧。此技巧可以用于完成很多相当复杂批处理控制

rem 以下是日期变量的获取,与时间变量类似,不用赘述。
echo set week=%%3>current.bat
echo set date=%%4>>current.bat
echo.|date>setclock.bat
call setclock.bat
del current.bat
del setclock.bat
  另外,请注意,我的ID是willsort,而非WILLSOFT,我的职业与软件销售毫无关联。

[此贴子已经被作者于2004-9-19 20:34:48编辑过]



[ Last edited by willsort on 2005-7-16 at 22:14 ]



※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2004-9-18 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Climbing
铂金会员

网络独行侠


积分 6962
发帖 2753
注册 2003-4-16
来自 河北保定
状态 离线
『第 9 楼』:  

呵呵,这个方法果然是妙极。学海无涯啊。



偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
2004-9-19 00:00
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (653668)  编辑帖子  回复  引用回复
kavenlee72
中级用户




积分 369
发帖 87
注册 2003-9-14
状态 离线
『第 10 楼』:  

但今天刚试过,setclock.bat和current.bat里没有可执行命令,运行这两个批处理的结果是提示“Current"既不是内部命令也不是外部命令等一大串提示。

2005-10-15 22:54
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


积分 4432
发帖 1512
注册 2002-10-18
状态 离线
『第 11 楼』:  

Re kavenlee72:

      请注意程序的适用和测试环境!



※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2005-10-15 23:13
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zh0159
新手上路





积分 14
发帖 3
注册 2005-10-10
状态 离线
『第 12 楼』:  



  Quote:
Originally posted by kavenlee72 at 2005-10-15 22:54:
但今天刚试过,setclock.bat和current.bat里没有可执行命令,运行这两个批处理的结果是提示“Current"既不是内部命令也不是外部命令等一大串提示。

setclock.bat和current.bat这两个文件只是在这个批处理中用来判断当前日期的而生成的临时文件,判断完毕后由后面的两行:

del current.bat
del setclock.bat

直接删除了,所以你再执行这两个批处理的结果就提示既不是内部命令也不是外部命令(文件没有了)。

2005-10-16 00:33
查看资料  发短消息 网志   编辑帖子  回复  引用回复
wubozh
初级用户





积分 40
发帖 18
注册 2006-2-22
状态 离线
『第 13 楼』:  前段时间刚才要用到这个,学着做了一个,看能不能用?

if not exist %date:~4% md %date:~4%

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

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


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



论坛跳转: