Board logo

标题: [文本处理] 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 编辑
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. title 某某定时备份 不许关闭
  4. :bf
  5. rem 下句del是用于测试环境
  6. color 1f
  7. set sj=%time:~0,2%
  8. set /a aa=(60-%time:~3,2%)*60
  9. if %sj% neq 16 (
  10.     color 0f
  11.     echo.
  12.     echo             警告:不要关闭
  13.     echo.
  14.     echo     计划备份时间为每晚3点范围内(会自动归零到00分钟)
  15.     echo.
  16.     echo     某某备份程序 现不在备份时间
  17.     timeout /T %aa% /nobreak
  18. ) else (
  19.         echo.>>%date:~0,4%备份记录.txt
  20.         echo %date% %time% 备份开始>>%date:~0,4%备份记录.txt
  21.         xcopy "c:\a\*.001" "\\192.168.1.123\备份" /d/y/e/k/h/r/c
  22.         ping /n 5 127.1 >nul
  23.         echo %date% !time! 备份结束>>%date:~0,4%备份记录.txt
  24.         ping /n 5 127.1 >nul
  25.         echo.
  26.         echo 备份等待中 不要停止此任务
  27.         timeout /T %aa% /nobreak
  28.     )
  29. 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 编辑
  1. if "%1"=="1" (
  2.   for /f "delims=" %%a in ('dir /b /o-d c:\a\*.001') do copy "%%a" \\192.168.1.123\备份&exit
  3. ) else (
  4.   at 3:00 /every:M,T,W,Th,F,S,Su C:\1.bat 1
  5. )
复制代码
直接执行就行了,打开后会自动添加任务计划,每天三点自动复制文件
作者: apang    时间: 2014-6-9 21:05

计划任务我更习惯用schtasks
  1. @echo off
  2. more +4 "%~0">"%~dp0Task.bat"
  3. schtasks /create /tn "MyTask" /tr "\"%~dp0Task.bat\"" /st 03:00 /sc daily /ru "" /f
  4. pause & exit/b
  5. @echo off & pushd "C:\A\"
  6. for /f "delims=" %%a in ('dir /a-d /b /o-d *.001') do (
  7.     copy "%%a" "\\192.168.1.123\备份\"
  8.     exit
  9. )
复制代码

作者: 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


    这样试:
  1. @echo off
  2. more +4 "%~0">"%~dp0Task.bat"
  3. schtasks /create /tn "MyTask" /tr "\"%~dp0Task.bat\"" /st 03:00:00 /sc daily /ru 用户名 /rp 密码
  4. pause & exit/b
  5. @echo off & pushd "C:\A\"
  6. for /f "delims=" %%a in ('dir /a-d /b /o-d *.001') do (
  7.     xcopy /d /y "%%a" "\\192.168.1.123\备份\"
  8.     exit
  9. )
复制代码
找了台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