找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 62170|回复: 15

[文本处理] BAT批处理如何定时复制最新文件?

[复制链接]
发表于 2014-6-9 10:31:58 | 显示全部楼层 |阅读模式
本帖最后由 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\备份  下的文件自动生成当天日期后,在把文件放里边
不要第三方插件
请高手解答
发表于 2014-6-9 12:33:49 | 显示全部楼层
本帖最后由 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
复制代码
发表于 2014-6-9 12:44:48 | 显示全部楼层
上面是自己用的临时修改。timeout 自己百度下载。
发表于 2014-6-9 13:34:36 | 显示全部楼层
Win7系统自带timeout
 楼主| 发表于 2014-6-9 15:29:23 | 显示全部楼层
求hlzj88 高手 在修改一下代码,可以不用工具吗,直接用XP下的命令,这样省事,还有,时间上,可以用AT命令吗,下午5点,用AT这样方便,因为运行代码后,就可以管理这个程序了。
 楼主| 发表于 2014-6-9 15:50:56 | 显示全部楼层
求个不要第三方的代码
发表于 2014-6-9 16:28:10 | 显示全部楼层
可以试试用系统计划任务来调用你的脚本、
发表于 2014-6-9 16:32:27 | 显示全部楼层
timeout /T %aa% /nobreak   改为ping /n %aa% 127.1>nul
上面的16 改几就是几点开始备份。
at 有时启动自己不成功。(这算是经验)
发表于 2014-6-9 18:30:57 | 显示全部楼层
本帖最后由 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. )
复制代码
直接执行就行了,打开后会自动添加任务计划,每天三点自动复制文件
发表于 2014-6-9 21:05:57 | 显示全部楼层
计划任务我更习惯用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. )
复制代码
 楼主| 发表于 2014-6-10 08:45:03 | 显示全部楼层
感谢2楼解答,可惜有第三方插件,
感谢9楼522235677 解答,运行成功了,也添加了任务,但是没有把文件复制过去。
感谢10楼apang 解答,运行没有成功,错误:无效参数/选项 - ‘/f’
键入“SCHTASKS /CREATE /?”以了解用法,没有把文件复制过去。
发表于 2014-6-10 10:34:37 | 显示全部楼层
本帖最后由 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账户无法复制网络文件,算了,还是用管理员帐户运行吧

评分

参与人数 1技术 +1 收起 理由
qq1050026447 + 1 谢谢

查看全部评分

 楼主| 发表于 2014-6-10 12:36:09 | 显示全部楼层
apang好给力,哈哈,成功了^_^
 楼主| 发表于 2014-6-10 12:46:35 | 显示全部楼层
T_T    我反复执行了好几遍发现
A文件夹下的001扩展名的文件,名字不改变的情况下,文件里面还增加了内容,我执行批处理后发现,
把\\192.168.1.123\备份\  
上的同名文件给覆盖了,
虽然覆盖后是最新的文件了,
但是我还想保留原先的啊
 楼主| 发表于 2014-6-10 12:47:12 | 显示全部楼层
可以复制后按时间建立文件夹,之后放到里面吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-21 07:46 , Processed in 0.034637 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表