中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-15 12:25
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 文件重命名时%time:~0,2%参数问题 查看 972 回复 11
楼 主 文件重命名时%time:~0,2%参数问题 发表于 2008-01-10 13:37 ·  中国 山东 烟台 联通
中级用户
★★
积分 257
发帖 123
注册 2008-01-05 11:08
UID 107722
性别 男
来自 烟台
状态 离线
文件在COPY过程中,借用了%time%进行重命名

例:
COPY aaa.dat %date:/=%%time:~0,2%%time:~3,2%aaa.dat
del aaa.dat

aaa.dat备份后,文件名会变成这样的格式200801101312aaa.dat

小时首位数字不是0时(10点~24点)能够正确执行COPY

但是如果小时首位数字是0(0~9),就不能正确执行了

例:
date: 2008/01/10
time: 9:05AM
aaa.dat备份后,文件名会变成这样的格式20080110 905aaa.dat
在文件名中,9的前面不是0,而是一个空格


请问这个问题怎样解决??
我想要的文件名是
200801100905aaa.dat

谢谢
路 是自己选的
学习 是为了具备解决问题的能力
2 发表于 2008-01-10 20:54 ·  中国 上海 宝山区 电信
初级用户
积分 52
发帖 21
注册 2008-01-01 09:30
UID 107370
性别 男
状态 离线
先将当前时间串存储到一个环境变量中,判断一下第一个字符,如果是空格,就替换为0,用处理过的字符串执行COPY
3 发表于 2008-01-10 22:08 ·  中国 山东 烟台 联通
中级用户
★★
积分 257
发帖 123
注册 2008-01-05 11:08
UID 107722
性别 男
来自 烟台
状态 离线
谢谢
路 是自己选的
学习 是为了具备解决问题的能力
4 发表于 2008-01-11 10:58 ·  中国 河北 保定 联通
铂金会员
★★★★
网络独行侠
积分 6,962
发帖 2,753
注册 2003-04-16 00:00
UID 1565
性别 男
来自 河北保定
状态 离线
如果你不在乎文件中有一个空格,可以这样:

COPY aaa.dat “%date:/=%%time:~0,2%%time:~3,2%aaa.dat”

或者就是事先判断%time:~0,1%是不是空格,如果是,可以用0%time:~1,1%代替。
偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
5 发表于 2008-01-11 12:07 ·  中国 山东 烟台 联通
中级用户
★★
积分 257
发帖 123
注册 2008-01-05 11:08
UID 107722
性别 男
来自 烟台
状态 离线
COPY的目标文件名中是不允许有空格的
否则会报错
路 是自己选的
学习 是为了具备解决问题的能力
6 发表于 2008-01-11 13:07 ·  中国 河北 保定 联通
铂金会员
★★★★
网络独行侠
积分 6,962
发帖 2,753
注册 2003-04-16 00:00
UID 1565
性别 男
来自 河北保定
状态 离线
当然可以有空格,加上双引号就可以了。例如:

D:\work\dos>copy a.txt "a b c.txt"
已复制 1 个文件。
偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
7 发表于 2008-01-11 22:22 ·  中国 山东 烟台 联通
中级用户
★★
积分 257
发帖 123
注册 2008-01-05 11:08
UID 107722
性别 男
来自 烟台
状态 离线
哦,学习了
谢谢
路 是自己选的
学习 是为了具备解决问题的能力
8 发表于 2008-01-12 01:09 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
UID 54766
性别 男
来自 上海
状态 离线
楼主,同一话题发2贴,2楼发贴时这帖子早结了,却没注明,也太不应该。。。
第一高手 第二高手

9 发表于 2008-01-12 09:11 ·  中国 山东 烟台 联通
中级用户
★★
积分 257
发帖 123
注册 2008-01-05 11:08
UID 107722
性别 男
来自 烟台
状态 离线
一起研究一下,共同学习嘛

难道你认为问题的解决方法只有一种吗?

还是说只要有了一种方法就不再继续学习了呢?
路 是自己选的
学习 是为了具备解决问题的能力
10 发表于 2008-01-12 09:17 ·  中国 山东 烟台 联通
中级用户
★★
积分 257
发帖 123
注册 2008-01-05 11:08
UID 107722
性别 男
来自 烟台
状态 离线
现在把“批处理室”的同贴解决方法补上:

set newtime=%date:/=%%time:~0,2%%time:~3,2%
echo %newtime: =0%

感谢解答者: DOS一根葱

发帖时有什么不妥的地方敬请原谅

谢谢大家的帮助

如有其他方法

请发上来
共同学习
路 是自己选的
学习 是为了具备解决问题的能力
11 发表于 2008-01-12 09:22 ·  中国 山东 烟台 联通
中级用户
★★
积分 257
发帖 123
注册 2008-01-05 11:08
UID 107722
性别 男
来自 烟台
状态 离线
方法1:

set newtime=%date:/=%%time:~0,2%%time:~3,2%
echo %newtime: =0%

感谢解答者: DOS一根葱


方法2:

COPY aaa.dat “%date:/=%%time:~0,2%%time:~3,2%aaa.dat”

感谢解答者:网络独行侠


本人初学DOS
衷心感谢大家的热心帮助
路 是自己选的
学习 是为了具备解决问题的能力
12 发表于 2008-01-12 15:35 ·  中国 山东 烟台 联通
中级用户
★★
积分 257
发帖 123
注册 2008-01-05 11:08
UID 107722
性别 男
来自 烟台
状态 离线
路 是自己选的
学习 是为了具备解决问题的能力
论坛跳转: