楼 主
批处理日期问题
发表于 2006-03-21 18:05 · 中国 新疆 乌鲁木齐 电信
新手上路
★
积分 12
发帖 4
注册 2006-03-21 13:13
20年会员
UID 52506
性别 男
状态 离线
使用md %date%命令可以建立一当前日期为名的文件夹,但是如何将指定文件copy到这个文件夹下呢?
第 2 楼
补充一下
发表于 2006-03-21 18:10 · 中国 新疆 乌鲁木齐 电信
新手上路
★
积分 12
发帖 4
注册 2006-03-21 13:13
20年会员
UID 52506
性别 男
状态 离线
第 3 楼
发表于 2006-03-21 18:15 · 中国 山东 济南 移动
钻石会员
★★★★★
积分 10,051
发帖 3,040
注册 2002-11-11 00:00
23年会员
UID 223
性别 男
状态 离线
copy filenmae "%date%"
简单就是美
第 4 楼
发表于 2006-03-21 18:20 · 中国 新疆 乌鲁木齐 电信
新手上路
★
积分 12
发帖 4
注册 2006-03-21 13:13
20年会员
UID 52506
性别 男
状态 离线
但是我并不是在当前目录下执行,而是类似From d:\aaa To e:\bbb\日期 这样子的
如果按照 d:\bbb\%date% 就会提示文件夹错误
另外楼上的方法是将文件本身改名了,这样也不符合要求啊:日期是用于文件夹名称上的,,且源目录中会存有多个文件
不过还是感谢楼上的热心,谢谢!
[ Last edited by vili on 2006-3-21 at 18:39 ]
第 5 楼
发表于 2006-03-21 19:50 · 中国 湖北 荆门沙洋区 电信
荣誉版主
★★★
积分 2,013
发帖 718
注册 2006-02-18 07:07
20年会员
UID 50550
状态 离线
晕啊,你echo %date%看看到底是什么。。。
比如今天吧,%date%变量其实代表的是 "2006-03-21 星期二",也就是说你用md命令执行的就是 md 2006-03-21 星期二。所以建立的文件夹名为 2006-03-21 和 星期二 ,而你的copy命令用到的时候就应该是:
copy filename 2006-03-21 星期二
不出错才怪呢,你试试copy d:\aaa e:\bbb\%date:~0,10%\aaa
或者md后直接一句cd %date:~0,10%,然后copy中把源文件的路径带上。
[ Last edited by 3742668 on 2006-3-21 at 20:14 ]
第 6 楼
发表于 2006-03-22 11:31 · 中国 新疆 乌鲁木齐 电信
新手上路
★
积分 12
发帖 4
注册 2006-03-21 13:13
20年会员
UID 52506
性别 男
状态 离线
问题解决,谢谢!
但是还想多问一句:2006-03-21明明是10个字符,为什么用~0,10%?这样不是11个字符吗?但是事实证明确实可行,为什么?
第 7 楼
发表于 2006-03-22 14:31 · 中国 北京 顺义区 联通
银牌会员
★★★
DOS联盟捡破烂的
积分 1,144
发帖 425
注册 2005-10-20 00:00
20年会员
UID 43784
来自 北京
状态 离线
我觉得应该是%date:~-10%这个才能够得到这个环境变量的最后10个字符,应为%date:~0,10%这样的形式是说从偏移量为1开始的取后10个字符 .................
第 8 楼
发表于 2006-04-04 16:36 · 中国 福建 三明 电信
中级用户
★★
积分 316
发帖 83
注册 2005-03-01 00:00
21年会员
UID 36626
性别 男
状态 离线
其实楼主如果加上一对引号
md "%date%"
就是建立一个文件夹了
3楼的Michael大侠也有写明
第 9 楼
发表于 2006-04-04 22:34 · 中国 湖北 武汉 电信
初级用户
★★
积分 168
发帖 85
注册 2005-08-26 00:19
20年会员
UID 41941
性别 男
状态 离线
以前的系统(Ghost XP),在命令行下运行 md %date% 只会创建1个文件夹:
2006-04-04
现在的系统(纯净版XP)用 md %date% 却创建出 2个文件夹:2006-04-04 星期二
(这样的话,我以前的一些批处理脚本就会出问题了,
比如:我以前用 dir /A >dir%date% .txt 就可以 生成 dir 2006-04-04.txt现在运行就会出错。)
现在虽然也可以用 md "%date%" 创建 一个文件夹 “2006-04-04 星期二"
但是我只想生成 一个文件夹 “2006-04-04 "
有谁知道怎么回事呀?小弟先行感谢了!
第 10 楼
发表于 2006-04-04 23:30 · 中国 湖北 荆门 电信
荣誉版主
★★★
积分 2,013
发帖 718
注册 2006-02-18 07:07
20年会员
UID 50550
状态 离线
第 11 楼
发表于 2006-04-04 23:43 · 中国 河北 保定 移动
铂金会员
★★★★
网络独行侠
积分 6,962
发帖 2,753
注册 2003-04-16 00:00
23年会员
UID 1565
性别 男
来自 河北保定
状态 离线
Originally posted by lpclimber at 2006-4-4 22:34:
以前的系统(Ghost XP),在命令行下运行 md %date% 只会创建1个文件夹:
2006-04-04
现在的系统(纯净版XP)用 md %date% 却创建出 2个文件夹:2006-04-04 星期 ...
找你这个问题的答案,确实费了一些力气。
关键在于“区域和语言选项”中的短日期格式。
显示星期的短日期格式为:yyyy-MM-dd ddd
而不显示的格式为:yyyy-MM-dd
这里的设置直接影响了%date%(同时包括date命令)的日期显示格式。
另外,注册表中的这个键值也是有效的:
HKEY_CURRENT_USER\Control Panel\International\sShortDate
区域和语言选项设置的就是这个注册表键值。
偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“
这个帖子”和“
这个帖子”并努力遵守,如果可能,请告诉更多的人!
第 12 楼
发表于 2006-04-04 23:58 · 中国 湖北 武汉 电信
初级用户
★★
积分 168
发帖 85
注册 2005-08-26 00:19
20年会员
UID 41941
性别 男
状态 离线
Climbing太厉害了!
我也找了很久,不过没有找到!
太感谢了!!
第 13 楼
发表于 2006-04-05 13:11 · 中国 湖北 武汉 电信
初级用户
★★
积分 168
发帖 85
注册 2005-08-26 00:19
20年会员
UID 41941
性别 男
状态 离线
不过我发现实际的与Climbing讲的
有一点出入
显示星期的短日期格式为:yyyy-M-d (中文XP系统默认)
不显示的格式为:yyyy-MM-dd
如附件图所示
第 14 楼
发表于 2006-04-06 03:39 · 中国 山西 运城 中移铁通
元老会员
★★★★
Batchinger
积分 4,432
发帖 1,512
注册 2002-10-18 00:00
23年会员
UID 19
性别 男
状态 离线
Re lpclimber:
关于%date%和sShortDate的关系确实比较微妙。在sShortDate取系统默认值时,%date%也会取CMD默认值,只是这两个默认值之间不存在制约关系,但它们都同时受区域和语言选项的制约,不同的代码页(比如437与936),不同的区域代码(比如UK与USA),都会产生不同的影响。而当sShortDate被修改时,%date%则会受到同样的影响。
因此,要保持日期格式的统一性,就必须修改sShortDate,而%time%则无法找到对应有效的注册表值。
※ Batchinger 致 Bat Fans:请访问
批处理编程的异类 ,欢迎交流与共享批处理编程心得!
第 15 楼
发表于 2006-09-29 00:05 · 中国 黑龙江 鸡西 中移铁通
初级用户
★
积分 71
发帖 34
注册 2006-09-15 02:15
19年会员
UID 62611
状态 离线
论坛跳转: