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