![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-09-23 16:06 |
共 47,812 主题排行 / 349,917 发帖 / 今日 0 篇 / 48,273 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 请教专家:有关修改文件名的问题。。。。。谢谢 |
| 可打印版本 2,040 / 7 |
| 第1楼 kumho | 发表于 2006-02-20 10:44 |
| 初级用户 发帖 28 积分 92 来自 nanjin | |
|
请教专家:有关修改文件名的问题。。。。。谢谢 提议一:怎样将建立的文档用当前机器时间作文件名???
题议二:现有程序自动产生以当前时间(数字)为文件名的文档(我不会)。。。我想能不能建立一个批处理程序执行后,10秒以内复制该文档,但时间文件名加(延长)10秒。。例如 20051030105022.TXT复制为另20051030105032.TXT。。。谢谢 。。请注意文件名是时间 或者文档产生10秒钟时复制该文档但以当前时间作文件名 感谢各位的关心 期待专家的释疑 |
|
| 第2楼 Scott0902 | 发表于 2006-02-20 13:11 |
| 中级用户 发帖 237 积分 466 | |
|
一、文件名可用 %UserName% (Win2000、XP系统才有效)
|
|
| 第3楼 willsort | 发表于 2006-02-20 15:09 |
| 元老会员 发帖 1,512 积分 4,432 | |
|
Re kumho:
从你的表述上理解,你应该是想以日期+时间的紧凑数字格式命名文件,并复制一份原文件名产生时间+10秒后时间同样格式的文件。你的应用我猜是NT CMD。我的算法基本如下,有愿意实现和其他算法的朋友,不妨也提出自己的意见。 首先,使用 for /f 剪接系统提供的环境变量 %date% %time%,而且需要确定并修改日期时间的显示格式(比如0前缀和12/24时制的问题)。 其次,使用 choice / ping / for+set+if 延迟10秒,复制一份以当前日期时间重新命名的文件。 |
|
| 第4楼 tigerpower | 发表于 2006-02-21 18:56 |
| 中级用户 发帖 99 积分 377 | |
|
在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 |
|
| 第5楼 htysm | 发表于 2006-03-04 11:55 |
| 高级用户 发帖 415 积分 866 | |
|
真是高手中的高手。
|
|
| 第6楼 bagpipe | 发表于 2006-03-04 13:05 |
| 银牌会员 发帖 425 积分 1,144 来自 北京 | |
|
第一种情况是计算机的名称作为文件名我们要用的环境变量是%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 |
|
| 第7楼 3742668 | 发表于 2006-03-04 14:15 |
| 荣誉版主 发帖 718 积分 2,013 | |
|
@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了,命令行也会自动退出。。 |
|
| 第8楼 kumho | 发表于 2006-03-04 15:14 |
| 初级用户 发帖 28 积分 92 来自 nanjin | |
|
谢谢,各位师兄 谢谢,各位师兄,问题解决了
|
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |