作者arsehole (又骑又磨姿势且佳)
看板MIS
标题[请益] robocopy区网电脑档案复制问题(已解决)
时间Sat Jan 6 17:14:10 2018
A电脑每天会产出档案,会依照2018的目录、子目录1月、子目录6号里头产出档案
(2018\01\06)
资料夹里头分别有C0401开头跟C0501开头档案,会将档案传到B电脑的C0401资料夹跟
(C0401****.xml副档名都一样)
C0501资料夹里面,只是最近都丢不完全,完全都要自己手动确定丢到B电脑
本来想用XCOPY,不过XCOPY好像无法辨识每日产出资料夹里的档案
想请问一下robocopy能够辨识A电脑C0401档名丢到相对应B电脑里的C0401资料夹吗?
另外使用 /MINAGE 这个指令能够辨识最新资料产出,直接将今日产出的资料夹的档案
复制到B电脑吗?
如果都做不到,其他的备份软体是否可以做到?刚刚装了几款备份软体
几乎都做不到这种功能,十分感谢
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 124.219.42.230
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/MIS/M.1515230055.A.BCF.html
1F:推 michaellai: beyondcimpare 01/06 17:55
2F:→ michaellai: beyondcompare 01/06 17:55
这软体好像是档案比对软体而已,我需要的是从A电脑产出的档案
复制到B电脑上面,还是说这有功能可以使用?
※ 编辑: arsehole (124.219.42.230), 01/06/2018 18:17:59
3F:推 lalelee: 用PowerShell吧 01/06 18:43
4F:→ konkonchou: fastcopy设排程.bat 试试? 01/06 19:11
感谢回答,这功能对於普通固定产出的资料有用,不过每天会固定产出日期资料夹
还需要把日期资料夹里面的档案传输到B电脑上分出来,这样子就没办法做了
※ 编辑: arsehole (124.219.42.230), 01/06/2018 19:26:51
5F:→ konkonchou: 扫特定资料夹名称,ex. 2018* 01/06 20:19
6F:推 leaderliu: bat档一开始判断今天日期再xcopy档案过去不能吗 01/06 21:26
7F:→ konkonchou: 若不考虑在bat或robocopy下日期参数去判别来源与目的 01/06 21:52
8F:→ konkonchou: 位置,不如就自己写程式比较快 01/06 21:52
9F:推 michaellai: beyond compare可以设定各种条件同步档案,包含NTFS o 01/06 22:02
10F:→ michaellai: wner/permission还有ZIP内比较等等等 01/06 22:02
11F:→ michaellai: 直接下载可以试用30天,好用就买一份吧 01/06 22:02
12F:→ coflame: Alwaysync就可了....google alwaysync 01/06 23:24
13F:推 jscorpio: 我也是用robocopy搬电子发票,多设几个排程吧 01/08 13:31
14F:推 jscorpio: 你的档名没有日期吗?我会用日期判断进行复制,搬过的就 01/08 13:36
15F:→ jscorpio: 加封存状态就不会重复搬移 01/08 13:36
16F:→ jscorpio: 有时候发票会需要重新转档,最好放个区间让它检查前後几 01/08 13:37
17F:→ jscorpio: 天的档案是否被更新过 01/08 13:37
18F:推 chang0206: 其实看不是很懂,如果直接同步最上层目录呢? 01/08 14:01
感谢大家回覆,没有及时回覆真是抱歉,先回答几个人的问题
Alway sync不适合我,因为同步的档案数太多,一天应该就满了,所以还是比较偏向用
robocopy下去做。
jscorpio兄说得没错,我是要再次确认电子发票汇入问题,系统程式没错
但是在执行排程的时候就是会断,之前都没有断过,上个月就开始发生这个问题
到後面只能人工传档。
回chang0206兄,同步最上层目录并不是我能做的,简单讲
A主机每天会产出一个资料夹C:\2018\01\08\(电子发票档)
产生完之後会抛转到B主机上,就是专门上传发票的,会依Turnkey内部资料库去排发票格式
会以C0401、C0501下去排,这个如果有接触到电子发票的人应该会知道
今天试了一下用ROBOCOPY下去做可以,但是做到一半而已
就是先挂载A主机资料夹为Z:\
robocopy Z:\2018\ C:\BackUp\ *.XML /S /MINAGE:1
然後加上/MINAGE:n→复制一天内产生出来的资料档
复制到B主机的资料夹就会变成C:\BackUP\01\08\(发票档)
本来有做出来复制(全部发票档)到C:\Turnkey\底下C0401、C0501.XML档
但每次做出来都是C:\Turnkey\01\08\(发票档)
我下一步筛选就没办法做了,因为都是在子目录底下,请问还有什麽方法可以做?
我现在想做的就是将C:\BackUP\01\08\里头的C0401、C0501.XML档
传出来到C:\Turnkey\目录底下
本来下午有试出来,不过忙碌一下不小心把测试视窗关掉,就整个忘了
※ 编辑: arsehole (61.224.77.203), 01/08/2018 22:23:16
20F:→ konkonchou: 自动根据档名前5码create对应资料夹放入吗 01/08 22:55
21F:推 jscorpio: 试着翻译:因为原本系统的搬档程式出问题你想自己刻一 01/09 00:06
22F:→ jscorpio: 个。 01/09 00:06
这样差不多了,大概是这样的意思,搬档程式有问题,所以再次确认自行补档
如果可以做到这样,後续我就会写了,就只是卡在跟目录跟子目录
十分感谢。
※ 编辑: arsehole (61.224.77.203), 01/09/2018 00:08:31
23F:推 jscorpio: 目前卡在搬到B之後的目录不对,因为连子目录也复制了(T 01/09 00:08
24F:→ jscorpio: urnkey不能有子目录) 01/09 00:08
没错,会依照前五码排C0401的资料夹去分类。
※ 编辑: arsehole (61.224.77.203), 01/09/2018 00:09:34
26F:→ jscorpio: to-single-directory 01/09 00:23
27F:→ jscorpio: (抱歉,忘了缩网址) 01/09 00:23
28F:→ jscorpio: 希望你不会卡在重复档名覆盖问题 01/09 00:24
试了一下用for在cmd底下可以做到,但直接加在.bat里头执行
就会失败,是不会发生重复档名覆盖问题,因为档名是依年月日跟档案数量下去排
如果用cmd下测试执行,是达到我想要的功能,但把它加入在bat执行就死在for那条指令上
※ 编辑: arsehole (124.219.42.230), 01/09/2018 14:43:24
29F:→ nfsong: 用Batch去串robocopy的路径哩? 01/09 21:45
31F:→ nfsong: 取system date 或直接loop 1~30 01/09 21:47
32F:推 chang0206: 所以你接触不到A主机吗?如果可以 去同步A的c:\2018 01/10 11:31
33F:→ chang0206: 这样不行吗? 01/10 11:31
34F:→ konkonchou: 把来源跟目的地结果画面截个图出来,确认後,这边有调 01/10 12:21
35F:→ konkonchou: 整过的程式直接跑就可以了 01/10 12:21
已经解决了,所以nfsong兄的方法我就不试了,有需求的人去试试看
我先把我的解决方法公布一下
感谢jscorpio兄的方法,另外还有来信的allen65535兄帮了大忙
问题大概简单讲一下
A主机跟B主机
A每天会产出年月日数字的资料夹,如(C:\2018\01\11)
里头会放五到八千个资料档(C0401*.XML、C0501*.XML........)
在A主机就会先做分类的动作,C0401*.XML会抛到B主机的C0401的资料夹里面
C0501*.XML会丢到C0501的资料
每日凌晨会转抛到B主机上,因为近期转抛不顺利,只抛八千个档案的一半而已
而且每天抛都抛不完全,故才想说在B主机上头写个robocopy再确认一次
我写的批次档如下
先在B主机挂载A主机的资料夹为Z:\
====================================================================
robocopy Z:\EINVOICE_XML\2018\ C:\einvt_xml *.xml /xo /s /lev:3 /maxage:1
这行指令会把A主机的最新产出的资料夹复制到B主机上
(C:\einvt_xml\01\11\*.xml....)
=================================
由jscorpio兄提供的方法
for /r C:\einvt_xml\ %%f in (*.xml) do move "%%f" C:\test
接下来把C:\Einvt_xml子目录底下的.xml复制出来到test目录下
感谢allen65535兄提醒批次档%f要多加%%f才能运作成功
=================================
robocopy C:\test\ C:\EINVTurnkey\DATA\UpCast\B2CSTORAGE\C0401\SRC C0401*.XML
/xo /maxage:1 /LOG+:C:\test\backup.txt
robocopy C:\test\ C:\EINVTurnkey\DATA\UpCast\B2CSTORAGE\C0501\SRC C0501*.XML
/xo /maxage:1 /LOG+:C:\test\backup.txt
开始将C:\test\目录底下的*.XML依档名传到各资料夹中
并将档案传输结果输出成log
===================================================================
del /S C:\test\*.xml
最後把C:\test里头的.xml全部删除。
目前试跑两天都OK了
另外allen65535兄的方法如下,是直接在A电脑做分类直接转抛到B电脑各个资料夹
批次档如下
====================================
set Type1=C0401
set Type2=C0501
copy \\A电脑名称\%DATE:~0,4%\%DATE:~5,2%\%DATE:~8,2%\%Type1%????.xml \\B电脑名
称\%Type1%
copy \\A电脑名称\%DATE:~0,4%\%DATE:~5,2%\%DATE:~8,2%\%Type2%????.xml \\B电脑名
称\%Type2%
======================================
最後发现robocopy指令有一个bug
明明下C0701*.XML,它会把C0401*.XML的某个档复制一份到C0701的资料夹里头
也因为这C0701比较少见,故直接用COPY指令来做
LOG档如下
=====================================
已启动 : Tue Jan 09 16:27:46 2018
来源 : C:\test\
目的地 : C:\EINVTurnkey\DATA\UpCast\B2CSTORAGE\C0701\SRC\
档案 : C0701*.XML
选项 : /COPY:DAT /XO /MAXAGE:1 /R:1000000 /W:30
-------------------------------------------------------------------------------
1 C:\test\
新档案 1331 C0401-20180109023313-00003462.xml
0%
100%
-------------------------------------------------------------------------------
总计 已复制 略过 不符 失
败 额外
目录 : 1 0 1 0 0 0
档案 : 1 1 0 0 0 0
位元组 : 1.2 k 1.2 k 0 0 0 0
时间 : 0:00:00 0:00:00 0:00:00 0:00:00
已结束 : Tue Jan 09 16:27:46 2018
=======================================
※ 编辑: arsehole (124.219.42.230), 01/11/2018 17:11:02