标题: [已结]每隔三分钟拷贝文件的批处理
[打印本页]
作者: yishu
时间: 2006-2-23 07:15
标题: [已结]每隔三分钟拷贝文件的批处理
我想在dos下用批处理实现每隔三分钟拷备c:\log\log.log到d:\logbak\log.log
应该如何实现!
───────────────── 版务记录 ─────────────────
执行:Will Sort
操作:修改标题:《19227 - 问个超高难的问题!》
处罚:因属论坛新人,不予积分处罚
提示:请访问 {7326}论坛新手必读,所有人的基本行为准则
───────────────── 版务记录 ─────────────────
Last edited by willsort on 2006-3-30 at 15:44 ]
作者: tigerpower
时间: 2006-2-23 18:55
使用 sleep :
@echo off
:cycle
copy /y c:\log\log.log d:\logbak\log.log
sleep 180
goto cycle
附件
1:
sleep.zip (2006-2-23 18:55, 7.49 KiB, 下载附件所需积分 1点
,下载次数: 74)
作者: weilong888
时间: 2006-2-23 19:30
这东西利害。
作者: JonePeng
时间: 2006-2-23 20:55
2楼的程序的缺点是不能实现后台复制,好像还不是符合楼主的要求哦 <img src="images/smilies/face-raspberry.png" align="absmiddle" border="0">
我觉得楼主的目标应该设计一个这样的程序:调用中断处理,常驻内存,实时监控,后台复制,并且能继续运行其它程序。这类似于Windows的计划任务。批处理很难做到,C语言就可以。
Last edited by JonePeng on 2006-2-23 at 20:56 ]
作者: doscc
时间: 2006-3-27 19:05
@echo off
copy c:\log\log.log d:\logbak\log.log
set mytime=%time:~3,2%
set wintime=%time:~0,3%
:t
set /A mytime+=3
if "%mytime%" GTR 60 set /A mytime-=60
if "%mytime%" =="60" set /A mytime=00
:m
set times=%time:~0,5%
set ti=%times:~3%
if "%ti%"=="00" set wintime=%time:~0,3%
if "%wintime%%mytime%"=="%times%" copy c:\log\log.log d:\logbak\log.log && goto t
goto m
Last edited by doscc on 2006-3-27 at 22:00 ]
作者: chenall
时间: 2006-3-27 23:16
我也来贴一个
@echo off
:start
copy /y c:\log\log.log d:\logbak\log.log
choice /T 180 /d y
goto start
作者: doscc
时间: 2006-3-28 22:51
这么好用的命令 choice
可是在我的XP 里的 cmd 没有这个命令啊
不知道为什么?
在2003就有
作者: Climbing
时间: 2006-3-28 23:30
复制一个过去就行了,choice好象有两个版本。
作者: 3742668
时间: 2006-3-29 00:51
XP直接就用ping好了
ping 1.1.1.1 -w 3000 -n 1
设定n的次数为1次,可尽量地使时间精确。
作者: kingchain
时间: 2006-3-29 11:06
Originally posted by chenall at 2006-3-27 23:16:
我也来贴一个
@echo off
:start
copy /y c:\log\log.log d:\logbak\log.log
choice /T 180 /d y
goto start
j此方法好!
请问你的 {copy to slip}怎么搞的啊?想学<img src="images/smilies/face-raspberry.png" align="absmiddle" border="0">
Last edited by kingchain on 2006-3-29 at 11:07 ]
作者: chenall
时间: 2006-3-29 17:07
加code代码
例子:
[code]
@echo off
:start
copy /y c:\log\log.log d:\logbak\log.log
choice /T 180 /d y
goto start
[/code]
作者: doscc
时间: 2006-3-29 17:33
请问 chenall
"" 的作用是什么?
----------------------------------------
哦知道了.
Last edited by doscc on 2006-3-29 at 17:37 ]
作者: warmoon
时间: 2006-4-4 10:35
Originally posted by JonePeng at 2006-2-23 20:55:
2楼的程序的缺点是不能实现后台复制,好像还不是符合楼主的要求哦 :P
我觉得楼主的目标应该设计一个这样的程序:调用中断处理,常驻内存,实时 ...
那我是菜菜鸟,pengpeng能不能传个C的样本上来我:P好好学学?谢谢阿!
作者: pizigao
时间: 2006-4-9 01:00
不错不错~收下了
作者: fpqcj
时间: 2007-3-12 00:53
标题: 都是高手,学习学习呀!!!
都是高手,学习学习呀!!!
作者: happygogo
时间: 2007-3-13 05:47
太强了啊
作者: axi
时间: 2007-3-13 06:52
向楼主提供一个VBS脚本如下:
Const OverwriteExisting = True
Set objFSO = CreateObject("Scripting.FileSystemObject")
do
objFSO.CopyFile "c:\log\log.log" , "d:\logbak\log.log", OverwriteExisting
WScript.Sleep (1000*60*3) '延时3分钟
loop
把以上代码复制到记事本中,再另存为 copy.vbs 双击此文件即可在后台执行复制文件,要注意是D:\logbak目录一定要存在,否则出错。要终止,请关闭 wScript.exe 进程。
作者: anqing
时间: 2007-3-13 08:21
Const OverwriteExisting = True
第一句代表什么不太明白?
作者: axi
时间: 2007-3-13 12:23
首先创建一个名为 OverwriteExisting 的常量并将其值设置为 True,再使用此常量告诉 FileSystemObject 可以对目标文件的现有实例进行覆盖。 do ... loop 语句就是当条件为 True 时或条件变为 True 之前,重复执行语句块,在这里就是重复执行复制文件(CopyFile)命令。
Last edited by axi on 2007-3-13 at 07:40 AM ]
作者: DFWYYY
时间: 2009-5-26 02:23
标题: 下载看看!
下载看看!
作者: wtp791211
时间: 2009-5-26 07:07
4楼的朋友说得有道理,就是有个批DOS窗口在那里确实烦人,不过可以用这个办法,把2楼朋友的批处理,用一个DOS转EXE的软件,转成EXE执行,这样就可以不用看到DOS窗口了.我个人觉得这样比较完美
作者: msg753
时间: 2009-5-26 11:51
呵呵新手来看看。
作者: mfcliu
时间: 2009-5-27 00:16
学习了
作者: abc2121
时间: 2009-5-27 03:19
good 学习中~