标题: [文本处理] BAT批处理如何定时复制最新文件? [打印本页]
作者: qq1050026447 时间: 2014-6-9 10:31 标题: BAT批处理如何定时复制最新文件?
本帖最后由 qq1050026447 于 2014-6-11 09:46 编辑
系统环境XP32位系统
比如: C盘的A目录下有一群
a.we.fwa.e201406030001.001
a.we.fwa.e201407030001.001
a.we.fwa.e201408050001.001
aefaefea.txt
waefawe4fa.txt
23f23f2f23f.txt
这样的文件
求个程序
每天3点定时复制扩展名为001的文件,(只复制其中日期为最新的,可以判断文件名中的时间来实现,也可以按照系统时间实现)
复制到
\\192.168.1.123\备份
这个目录下
复制前判断\\192.168.1.123\备份下的文件是否与现在要复制的文件日期一样,如果一样就不用复制,如果日期不一样就复制
复制到\\192.168.1.123\备份 下的文件自动生成当天日期后,在把文件放里边
不要第三方插件
请高手解答
作者: hlzj88 时间: 2014-6-9 12:33
本帖最后由 hlzj88 于 2014-6-9 12:43 编辑
- @echo off
- setlocal enabledelayedexpansion
- title 某某定时备份 不许关闭
- :bf
- rem 下句del是用于测试环境
- color 1f
- set sj=%time:~0,2%
- set /a aa=(60-%time:~3,2%)*60
- if %sj% neq 16 (
- color 0f
- echo.
- echo 警告:不要关闭
- echo.
- echo 计划备份时间为每晚3点范围内(会自动归零到00分钟)
- echo.
- echo 某某备份程序 现不在备份时间
- timeout /T %aa% /nobreak
- ) else (
- echo.>>%date:~0,4%备份记录.txt
- echo %date% %time% 备份开始>>%date:~0,4%备份记录.txt
- xcopy "c:\a\*.001" "\\192.168.1.123\备份" /d/y/e/k/h/r/c
- ping /n 5 127.1 >nul
- echo %date% !time! 备份结束>>%date:~0,4%备份记录.txt
- ping /n 5 127.1 >nul
- echo.
- echo 备份等待中 不要停止此任务
- timeout /T %aa% /nobreak
- )
- goto bf
复制代码
作者: hlzj88 时间: 2014-6-9 12:44
上面是自己用的临时修改。timeout 自己百度下载。
作者: DAIC 时间: 2014-6-9 13:34
Win7系统自带timeout
作者: qq1050026447 时间: 2014-6-9 15:29
求hlzj88 高手 在修改一下代码,可以不用工具吗,直接用XP下的命令,这样省事,还有,时间上,可以用AT命令吗,下午5点,用AT这样方便,因为运行代码后,就可以管理这个程序了。
作者: qq1050026447 时间: 2014-6-9 15:50
求个不要第三方的代码
作者: vmzlv 时间: 2014-6-9 16:28
可以试试用系统计划任务来调用你的脚本、
作者: hlzj88 时间: 2014-6-9 16:32
timeout /T %aa% /nobreak 改为ping /n %aa% 127.1>nul
上面的16 改几就是几点开始备份。
at 有时启动自己不成功。(这算是经验)
作者: 522235677 时间: 2014-6-9 18:30
本帖最后由 522235677 于 2014-6-9 18:37 编辑
- if "%1"=="1" (
- for /f "delims=" %%a in ('dir /b /o-d c:\a\*.001') do copy "%%a" \\192.168.1.123\备份&exit
- ) else (
- at 3:00 /every:M,T,W,Th,F,S,Su C:\1.bat 1
- )
复制代码
直接执行就行了,打开后会自动添加任务计划,每天三点自动复制文件
作者: apang 时间: 2014-6-9 21:05
计划任务我更习惯用schtasks- @echo off
- more +4 "%~0">"%~dp0Task.bat"
- schtasks /create /tn "MyTask" /tr "\"%~dp0Task.bat\"" /st 03:00 /sc daily /ru "" /f
- pause & exit/b
- @echo off & pushd "C:\A\"
- for /f "delims=" %%a in ('dir /a-d /b /o-d *.001') do (
- copy "%%a" "\\192.168.1.123\备份\"
- exit
- )
复制代码
作者: qq1050026447 时间: 2014-6-10 08:45
感谢2楼解答,可惜有第三方插件,
感谢9楼522235677 解答,运行成功了,也添加了任务,但是没有把文件复制过去。
感谢10楼apang 解答,运行没有成功,错误:无效参数/选项 - ‘/f’
键入“SCHTASKS /CREATE /?”以了解用法,没有把文件复制过去。
作者: apang 时间: 2014-6-10 10:34
本帖最后由 apang 于 2014-6-10 11:32 编辑
回复 11# qq1050026447
这样试:- @echo off
- more +4 "%~0">"%~dp0Task.bat"
- schtasks /create /tn "MyTask" /tr "\"%~dp0Task.bat\"" /st 03:00:00 /sc daily /ru 用户名 /rp 密码
- pause & exit/b
- @echo off & pushd "C:\A\"
- for /f "delims=" %%a in ('dir /a-d /b /o-d *.001') do (
- xcopy /d /y "%%a" "\\192.168.1.123\备份\"
- exit
- )
复制代码
找了台xp试,system账户无法复制网络文件,算了,还是用管理员帐户运行吧
作者: qq1050026447 时间: 2014-6-10 12:36
apang好给力,哈哈,成功了^_^
作者: qq1050026447 时间: 2014-6-10 12:46
T_T 我反复执行了好几遍发现
A文件夹下的001扩展名的文件,名字不改变的情况下,文件里面还增加了内容,我执行批处理后发现,
把\\192.168.1.123\备份\
上的同名文件给覆盖了,
虽然覆盖后是最新的文件了,
但是我还想保留原先的啊
作者: qq1050026447 时间: 2014-6-10 12:47
可以复制后按时间建立文件夹,之后放到里面吗?
作者: qq1050026447 时间: 2014-6-10 12:47
难度又增加了^_^
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |