|
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
状态 离线
|
|
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 |
|
|
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 ]
|
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 |
|