| 
 
stonelei 
初级用户
 
  
 
  
 
积分 172 
发帖 14 
注册 2004-8-25 
状态 离线
 | 
『楼 主』:
 不用LMOD,纯DOS下批处理可以建立日期目录吗?
 
使用 LLM 解释/回答一下
  
前几天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 楼』:
 
 
使用 LLM 解释/回答一下
  
不使用第三方工具,纯粹使用DOS 6.22的内部命令,这个基本上比较难。至少我不知道如何去做,如果willsort也没有好办法,估计就真的不太可能了。 
 
    
 
  
  |  
                  
  
                    偶只喜欢回答那些标题和描述都很清晰的帖子! 
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人! 
 |   
 | 
  2004-8-28 00:00 | 
  
 | 
 | 
 
stonelei 
初级用户
 
  
 
  
 
积分 172 
发帖 14 
注册 2004-8-25 
状态 离线
 | 
『第 3 楼』:
 
 
使用 LLM 解释/回答一下
  
我现在有一个想法,就是把当前日期保存到临时文件中:echo %date%>a.txt然后再取a.txt 的某部分字符(日期)成为变量,再根据变量建立目录.再删除临时文件 a.txt这样的构思不知可行否? 
 
    
 
  
 |   
 | 
  2004-8-28 00:00 | 
  
 | 
 | 
 
stonelei 
初级用户
 
  
 
  
 
积分 172 
发帖 14 
注册 2004-8-25 
状态 离线
 | 
『第 4 楼』:
 
 
使用 LLM 解释/回答一下
  
在论坛上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 来自 厦门 
状态 离线
 | 
 | 
  2004-8-29 00:00 | 
  
 | 
 | 
 
stonelei 
初级用户
 
  
 
  
 
积分 172 
发帖 14 
注册 2004-8-25 
状态 离线
 | 
 | 
  2004-8-30 00:00 | 
  
 | 
 | 
 
stonelei 
初级用户
 
  
 
  
 
积分 172 
发帖 14 
注册 2004-8-25 
状态 离线
 | 
『第 7 楼』:
 
 
使用 LLM 解释/回答一下
  
查过以前 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 楼』:
 
 
使用 LLM 解释/回答一下
  
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,我的职业与软件销售毫无关联。
  
 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 楼』:
 
 
使用 LLM 解释/回答一下
  
呵呵,这个方法果然是妙极。学海无涯啊。 
 
    
 
  
  |  
                  
  
                    偶只喜欢回答那些标题和描述都很清晰的帖子! 
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人! 
 |   
 | 
  2004-9-19 00:00 | 
  
 | 
 | 
 
kavenlee72 
中级用户
 
   
 
  
 
积分 369 
发帖 87 
注册 2003-9-14 
状态 离线
 | 
『第 10 楼』:
 
 
使用 LLM 解释/回答一下
  
但今天刚试过,setclock.bat和current.bat里没有可执行命令,运行这两个批处理的结果是提示“Current"既不是内部命令也不是外部命令等一大串提示。 
 
    
 
  
 |   
 | 
  2005-10-15 22:54 | 
  
 | 
 | 
 
willsort 
元老会员
 
          Batchinger
  
 
积分 4432 
发帖 1512 
注册 2002-10-18 
状态 离线
 | 
 | 
  2005-10-15 23:13 | 
  
 | 
 | 
 
zh0159 
新手上路
 
 
 
  
  
积分 14 
发帖 3 
注册 2005-10-10 
状态 离线
 | 
『第 12 楼』:
 
 
使用 LLM 解释/回答一下
  
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 楼』:
 前段时间刚才要用到这个,学着做了一个,看能不能用?
 
使用 LLM 解释/回答一下
  
if not exist %date:~4% md %date:~4% 
 
    
 
  
 |   
 | 
  2006-3-8 23:12 | 
  
 |