中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS疑难解答 & 问题讨论 (解答室) » 如何用命令将文件夹命名为当前日期+文件夹名呢
« [1] [2] »
作者:
标题: 如何用命令将文件夹命名为当前日期+文件夹名呢 上一主题 | 下一主题
lanlinlan
初级用户





积分 76
发帖 29
注册 2006-11-18
状态 离线
『楼 主』:  如何用命令将文件夹命名为当前日期+文件夹名呢

如题!  假如有此文件夹 D:\a  如何让他调用系统自己的时间为自己的名字  大概的意思是命名后为 D:\20061116a

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

DOS一根葱


积分 5493
发帖 2315
注册 2006-5-1
来自 上海
状态 离线
『第 2 楼』:  


if exist D:\a\nul move D:\a D:\%date:~0,4%%date:~5,2%%date:~8,2%a
http://www.cn-dos.net/forum/viewthread.php?tid=24639&fpage=1&highlight=%E5%BD%93%E5%89%8D%E6%97%A5%E6%9C%9F



第一高手    第二高手

2006-11-19 01:24
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lanlinlan
初级用户





积分 76
发帖 29
注册 2006-11-18
状态 离线
『第 3 楼』:  

真的非常的感谢 现在好象可以了 以下是代码:
@echo off
for /f "tokens=1-4 delims=:-" %%i in ("%date:~0,10%%time%") do set DT=%%i%%j%%k%%l
set DT=%DT: =0%
echo %DT%
ren a %DT%a
pause

2006-11-19 01:36
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lanlinlan
初级用户





积分 76
发帖 29
注册 2006-11-18
状态 离线
『第 4 楼』:  

@echo off
for /f "tokens=1-4 delims=:-" %%i in ("%date:~0,10%%time%") do set DT=%%i%%j%%k%%l
set DT=%DT: =0%
echo %DT%
ren a %DT%a
pause

好象又有新的问题哦 上面的代码可以在XP下测试通过 但是2000测试会出现 星期 而且日期也不对  NT根本就没有反映  请问有谁知道是什么原因么

2006-11-19 02:21
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lanlinlan
初级用户





积分 76
发帖 29
注册 2006-11-18
状态 离线
『第 5 楼』:  

有没有人知道为什么啊?

2006-11-19 05:36
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Climbing
铂金会员

网络独行侠


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

这是因为Windows 2000的日期格式与XP设置不同,你自己在CMD下:
echo %date%
就可以看出区别来了。

要使它们相同,可能需要修改有关的注册表设置,注册表的具体位置偶忘了。

而NT 4.0可能压根就不支持%date%这种环境变量,这是微软系统的兼容性问题,恐怕要解决只能通过第三方软件来实现了。



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





积分 7493
发帖 2672
注册 2005-9-2
状态 离线
『第 7 楼』:  



  Quote:
而NT 4.0可能压根就不支持%date%这种环境变量

可以根据 %cmdextversion% 来判断吗?




C:\>BLOG http://initiative.yo2.cn/
C:\>hh.exe ntcmds.chm::/ntcmds.htm
C:\>cmd /cstart /MIN "" iexplore "about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>"
2006-11-19 06:47
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
redtek
金牌会员





积分 2902
发帖 1147
注册 2006-9-21
状态 离线
『第 8 楼』:  

我用了一个好玩的办法~:)

不过,下面是原型,因为当我做完了才发现原来取到的日期是6位:061119目录名,而不是:20061119目录名。

不过,要实现 “20061119目录名” 也不是很难,还是上面取文件名日期的原理,但可能要升成临时文件:( 

根据对比win2003与win2000的 %date% 发现它们的关系是“日期 星期几”,而win2000是“星期几 日期”,要是xp还不知道要出现什么,哈哈。

但是,不管它们怎么变,系统DIR显示文件名的时候 chcp 936 所给出的日期应该不变:
2006-10-25  11:53    <DIR>
2006-11-19  16:09
2006-11-19  16:09    <DIR>
2006-11-19  08:46
2006-11-19  18:12    <DIR>
2006-10-25  13:42
2006-10-31  23:14    <DIR>
2006-11-18  21:16
2006-11-19  12:30
win2003与win2000对比日期,它们格式是一样的~:)
所以,取文件名的日期就行了,或新建一个临时文件,这文件DIR读还是别的方法%~方法取(但这方法只能是6位日期),
所以,DIR方法取较为通用~:)

下面代码仅实现6位日期加上楼主给出的原目录名:
@echo %dbg% off
if [%1]==[] echo 运行方式: %~0.bat  "要更名的目录名,如目录名含空格请使用引号括起来" && goto :eof
set /p= <nul>>"%~f0"
set .=%~t0
set .=%.:-=%
set .=%.:~0,6%
move "%~1"  "%.%%~1" 2>nul>nul
if exist "%.%%~1" echo "%~1" 文件夹被成功命名为:"%.%%~1"
rem 此行不能删
win2003中文版与win2000高级服务器版默认安装的系统里测试成功~:)
使用方法:


上面代码名字.BAT   要更改的目录名,带空格的目录名要加引号括起来


但之所以称之为好玩,是因为不想升成临时文件,但不生成临时文件就得不到当前日期。
而我又不喜欢花时间动脑子对比不同版本系统(太麻烦,麻烦的没乐趣了,所以不做:)
那么就让这个批处理自己写自己吧~:)
反正每运行一次才自动增多一个字节,哈哈……
它自己写了自己一个字节追加到结尾,所以自己的文件时间当然变成了最新的,
所以就取到了,上面是用%~方式取的,如果DIR取也一样,那样就是8位时间啦~:)

上面例子一半实用,自己写自己,每运行一次多一个字节,哈哈……不严格,所以权当玩笑~:)

[ Last edited by redtek on 2006-11-18 at 06:28 PM ]



    Redtek,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
2006-11-19 07:23
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
redtek
金牌会员





积分 2902
发帖 1147
注册 2006-9-21
状态 离线
『第 9 楼』:  

等等……有点错误~:)
在win2003下丢了一部分日期,不好意思,当我上面贴子没发~:)
吃完饭我接着改:)

---

吃完饭了~:)

原来Win2000中批处理 %~t0 参数取得文件时间为:    06-11-19 19:35
 而Win2003中批处理 %~t0 参数取得文件时间为: 2006-11-19 19:37

差了两位:)

看来win2003与win2000的文件日期的区别就是 "2006" 与 "06",
它们(取得日期的字符串)的第5位如果是 "-" 字符,就说明是 win2003(或其它,但不是win2000),
如果第5位不含有 "-" 这个字符,那么就在取得日期前(左边)补"20",
反正这个批处理也不可能用从2006年用到2100年( 活不到那一年,真是突然无限伤感啊~~~有同感的举手~:)
所以,前面补20就可以完成win2000系统的日期问题~:)


(不过,这不是严谨的方法,纯粹是一个非正经的玩笑贴子,不好:)

[ Last edited by redtek on 2006-11-18 at 08:53 PM ]



    Redtek,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
2006-11-19 07:31
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
redtek
金牌会员





积分 2902
发帖 1147
注册 2006-9-21
状态 离线
『第 10 楼』:  

可以啦~:)
原我在9楼、8楼发的代码贴子是有问题的版本,无效。
以下面代码为准:(但,还是基本原型,只是一种取日期的好玩的方法而已,还是不太实用,只是基础满足楼主2003、2000里面的应用)


将指定目录更改为: 当前日期+原目录名    的形式~:)


测试环境: Windows Server 2003 中文企业版  
      Windows 2000  中文高级服务器版

以上环境可以正常运行~:)
因为没装 WindowsXP版,所以没有机会测试,请拥有XP版本的朋友测试一下~:)
@echo %dbg% off
if [%1]==[] echo 运行方式: %~f0  "要更名的目录名,如目录名含空格请使用引号括起来" && goto :eof
set /p= <nul>>"%~f0"
set ".=20%~t0"
if [%.:~6,1%]==[-] (set ".=%.:~2,10%") else (set ".=%.:~0,10%")
set ".=%.:-=%"
move "%~1"  "%.%%~1" 2>nul>nul
if exist "%.%%~1" echo "%~1" 文件夹被成功命名为:"%.%%~1"
rem 此行不能删
[ Last edited by redtek on 2006-11-19 at 10:04 AM ]

附件 1: rr.rar (2006-11-19 22:28, 312 bytes, 下载附件所需积分 1 点 ,下载次数: 23)


    Redtek,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
2006-11-19 10:43
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Michale
初级用户




积分 52
发帖 27
注册 2006-10-6
来自 ☆逍遥宫☆
状态 离线
『第 11 楼』:  

我试了好几遍 好象还是有问题的 我这个是xp的 怎么玩上面的代码都玩不来~~一点效果都没有~~`看来还是2000的比较好一点~~~不知道微软怎么搞的~~



爱!
2006-11-21 08:44
查看资料  访问主页  发短消息 网志   编辑帖子  回复  引用回复
redtek
金牌会员





积分 2902
发帖 1147
注册 2006-9-21
状态 离线
『第 12 楼』:  

我现在在XP环境下测试了一遍~:)

测试系统版本~:)
名称:     Windows XP Home Edition 中文版
版本:     5.1 内部版本 2600 Service Pack 2
建立了一个做被实验对象,一个名为“a b c”带空格的目录~:)
2006-11-20  20:14    <DIR>          a b c
然后执行 rr.bat (就是楼上附件提供的将指定目录名更改为 当前日期+原目录名 的形式)
C:\temp>rr.bat  "a b c"
"a b c" 文件夹被成功命名为:"20061120a b c"

然后显示刚刚被rr.bat处理完的目录名:
2006-11-20  20:14    <DIR>          20061120a b c
你看,在XP环境下这个"a b c"的目录名已被自己更改为以当前日期+原目录名的形式: “20061120a b c”

我测试在XP环境下成功~:)
同时也感谢Lxmxn兄在他的XP环境上帮我测试了echo %date%的日期格式等内容:)

上面的测试是在命令行上直接键入命令来运行 rr.bat 这个批处理的,而不是直接鼠标双击的方式运行:)

你是使用什么方式测试的?显示的是什么?你的XP的具体版是多少?
如果有问题我再修改,拜托~:)

[ Last edited by redtek on 2006-11-20 at 08:39 PM ]

   此帖被 +15 点积分      点击查看详情   
评分人:【 electronixtar 分数: +8  时间:2006-11-21 11:46
评分人:【 lxmxn 分数: +7  时间:2006-11-23 14:07




    Redtek,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
2006-11-21 09:23
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
electronixtar
铂金会员





积分 7493
发帖 2672
注册 2005-9-2
状态 离线
『第 13 楼』:  

redtek辛苦了,偶给你加分!




C:\>BLOG http://initiative.yo2.cn/
C:\>hh.exe ntcmds.chm::/ntcmds.htm
C:\>cmd /cstart /MIN "" iexplore "about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>"
2006-11-21 11:46
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
redtek
金牌会员





积分 2902
发帖 1147
注册 2006-9-21
状态 离线
『第 14 楼』:  

啊~~看到加了这么高的分乐晕了过去~:)
n分钟后……醒来时又接着乐~:D
多谢electronixtar兄鼓励~:)



    Redtek,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
2006-11-21 12:03
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 15 楼』:  


  我也来给 Redtek 兄加分,热情、耐心令小弟佩服~~


2006-11-23 14:06
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: