Board logo

标题: [文件操作] 批处理怎样自动跟新COPY文件? [打印本页]

作者: august    时间: 2018-12-3 16:30     标题: 批处理怎样自动跟新COPY文件?

场景是这样的:
1、每天服务器路径\\172.19.21.23\file,这里暂时称之为文件路劲A,可能会有文件跟新,跟新的文件一直在不会删除
一组文件7-8个(一个日期一天的数据,有时会多个X,格式为TXT格式),有时无跟新,有时会跟新14个或者32个文件,差不多7的倍数
文件名有规则如下,最后6位数字是日期:
     F24598720200181127A
     F24598720200181127B
     F24598720200181127C
     F24598720200181127D
     F24598720200181127E
     F24598720200181127F
     F24598720200181127G
2、然后有一个服务器地址是\\172.19.18.221\updat,这里称之为文件路径B,每天上级会从这里抽取文件,被抽取的文件会删除(剪切)
3、所以每天上午需要人工从路径A这里COPY最新的文件到路径B,例如今天是12月3日,发现有文件181126A-G的7个文件,我就会COPY这个几个最新的文件到路径B服务器,做好记录(不然记不住)

需求是这样:
希望走一个BAT自动每天WINDOWS计划任务执行一次或者几次,把跟新的文件自动COPY过去,简单粗暴的方式是每天COPY最后50个文件,目标文件存在就覆盖,并且不报错。
好一点就是早上7点计算一下路劲A的文件个数,然后中午12点重新计算一下,发现文件数量有多,多了几个那就COPY几个。当然这是理想化了。

请教一下各位,有什么方法没有,在此先感谢
作者: hlzj88    时间: 2018-12-3 20:32

本帖最后由 hlzj88 于 2018-12-3 20:45 编辑
  1. @echo off&&setlocal enabledelayedexpansion
  2. set mm=
  3. set mm=%date:~2,2%%date:~5,2%%date:~8,2%
  4. rem 利用条件关系,使只有两个服务器都能成功登陆才有记录产生
  5. net user z: \\172.19.18.221\updat %密码% /user:%用户名%&&net user y: \\172.19.21.23\file %密码% /user:%用户名%&&echo %mm%>>z:\记录.txt
  6.    md z:\%mm%
  7.    xcopy y:\*%mm%* z:\%mm%\ /y/k/c
  8. for /f %%i in (a.txt) do (
  9.    md z:\%%i
  10.    xcopy y:\*%%i* z:\%%i\ /y/k/c
  11.    if exist z:\%%i\*%%i* echo %mm%>a.txt
  12.    )
  13. rem 上面9,10句只拷贝今天的文件
  14. rem 上面for使今天运行只拷贝a.txt里记录的日期数字的文件。即今天拷贝昨天的。
  15. pause
  16. exit
复制代码
没有环境测试,大意如此,楼主斟酌调试使用。
作者: hlzj88    时间: 2018-12-3 20:39

本帖最后由 hlzj88 于 2018-12-3 20:45 编辑

忘说了  y是你的a,z是你的b。
用哪个复制删除另外的复制。
  1. net user y: /del
  2. net user z: /del
复制代码
上面代码加入到 17位置
作者: august    时间: 2018-12-4 08:47

感谢指教,我先学习消化一下。
作者: flashercs    时间: 2018-12-4 10:05

拷贝一天内更新的文件,每60分钟检查一次,日志记录到D:\copy.Log ;计划任务开机运行,不用退出.
  1. robocopy.exe "\\172.19.21.23\file" "\\172.19.18.221\update" *.txt /MAXAGE:1 /MOT:60 /LOG+:"D:\copy.Log"
复制代码

作者: august    时间: 2018-12-12 10:18

回复 5# flashercs


    谢谢,一会我试试看




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2