中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 请教专家:有关修改文件名的问题。。。。。谢谢
作者:
标题: 请教专家:有关修改文件名的问题。。。。。谢谢 上一主题 | 下一主题
kumho
初级用户





积分 92
发帖 28
注册 2005-11-23
来自 nanjin
状态 离线
『楼 主』:  请教专家:有关修改文件名的问题。。。。。谢谢

提议一:怎样将建立的文档用当前机器时间作文件名???
题议二:现有程序自动产生以当前时间(数字)为文件名的文档(我不会)。。。我想能不能建立一个批处理程序执行后,10秒以内复制该文档,但时间文件名加(延长)10秒。。例如
20051030105022.TXT复制为另20051030105032.TXT。。。谢谢
。。请注意文件名是时间

或者文档产生10秒钟时复制该文档但以当前时间作文件名

                                              感谢各位的关心
                                              期待专家的释疑

2006-2-20 10:44
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Scott0902
中级用户





积分 466
发帖 237
注册 2005-10-12
状态 离线
『第 2 楼』:  

一、文件名可用 %UserName% (Win2000、XP系统才有效)

2006-2-20 13:11
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


积分 4432
发帖 1512
注册 2002-10-18
状态 离线
『第 3 楼』:  

Re kumho:

      从你的表述上理解,你应该是想以日期+时间的紧凑数字格式命名文件,并复制一份原文件名产生时间+10秒后时间同样格式的文件。你的应用我猜是NT CMD。我的算法基本如下,有愿意实现和其他算法的朋友,不妨也提出自己的意见。

      首先,使用 for /f 剪接系统提供的环境变量 %date% %time%,而且需要确定并修改日期时间的显示格式(比如0前缀和12/24时制的问题)。

      其次,使用 choice / ping / for+set+if 延迟10秒,复制一份以当前日期时间重新命名的文件。



※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2006-2-20 15:09
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tigerpower
中级用户

大师兄


积分 377
发帖 99
注册 2005-8-26
状态 离线
『第 4 楼』:  

在xp下使用 GNU date

for /f "tokens=*" %i in ('.\date -R') do @for /f "tokens=*" %j in ('.\date -d "%i" +%Y%m%d%H%M%S') do @the_command>%j.txt 2>NUL&for /f "tokens=*" %k in ('.\date -d "%i 10 sec" +%Y%m%d%H%M%S') do @copy %j.txt %k.txt

2006-2-21 18:56
查看资料  发短消息 网志   编辑帖子  回复  引用回复
htysm
高级用户




积分 866
发帖 415
注册 2005-12-4
状态 离线
『第 5 楼』:  

真是高手中的高手。

2006-3-4 11:55
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bagpipe
银牌会员

DOS联盟捡破烂的


积分 1144
发帖 425
注册 2005-10-20
来自 北京
状态 离线
『第 6 楼』:  

第一种情况是计算机的名称作为文件名我们要用的环境变量是%comptername%
第二种情况看一下代码,时间不准,其他应该符合你的要求
@echo off
set /p i=填入准备拷贝的文件(完整路径):
set /p u=填入目标文件夹路径:
:backup
ping 1.1.1.1 -n 20 -w 400>nul
echo %date%%time%>1.txt
for /f "tokens=2,3,4,5,6* delims=-:. " %%i in (1.txt) do copy %i% %u%\%%i%%j%%k%%l%%m%%n.txt
echo 备份一次... ...
goto backup

2006-3-4 13:05
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
3742668
荣誉版主





积分 2013
发帖 718
注册 2006-2-18
状态 离线
『第 7 楼』:  

@echo off
set /a 日期 = %date:~0,4%%date:~5,2%%date:~8,2%
set /a 时间 = %time:~0,2%%time:~3,2%%time:~6,2%
echo 欢迎来到中国DOS联盟! >%日期%%时间%.txt

cls
echo 按任意键开始复制文件...
pause>nul

:copy
copy %日期%%时间%.txt %date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%.txt >nul
set /a num = %num% + 1
set string=已复制文件%num%次,要取消请按确定...

msg %username% /time:10  /w %string% >nul && set /a hflag = %time:~6,1% && set /a lflag = %time:~7,1%
set /a new = %time:~6,2%
if %hflag% == 5 set /a hflag = 0 && set /a new = %new% + 10
set /a old = %hflag%%lflag%
set /a flag = %new% - %old%
if %flag% LSS 10 goto :eof
goto copy

XP下运行,需要开启TermService服务(一般默认都是开启的),如果不是你可以修改:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TermService下的START键。。。
运行后先会生成你要求1里面要求的文件,然后提示你按任意键开始复制文件(要求2)
,如果你按下回车后就会弹出一个对话框提示你正在复制文件的信息,如时间(标题上),次数等等。。。如果你不想复制了只要点一下确定就OK了,命令行也会自动退出。。

2006-3-4 14:15
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
kumho
初级用户





积分 92
发帖 28
注册 2005-11-23
来自 nanjin
状态 离线
『第 8 楼』:  谢谢,各位师兄

谢谢,各位师兄,问题解决了

2006-3-4 15:14
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: