[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 批处理如何实现比对 备份 查重 清理?

我在论坛搜了比对代码,和我需求不同。求助以下。folderA和folderB的实际文件夹名一样,只是路径不同。
将要备份的存于网盘的folderA文件夹包括内部所有子文件夹及其文件,备份到存于本机的folderB。完成后对folderB进行全目录重名文件查找,并自动删除旧的,或者提示出来让我手删。(因为可能部分文件移动了位置)
xcopy和robocopy我会,但是比对查重清理不会。

或者能有一个指定目录下包括子文件夹的所有文件查重也行……我有这个绿色工具,但我不能在工作电脑上运行第三方exe……

TOP

回复 3# idwma


红字报错

   iex : At line:7 char:17
+ if(!$ContainsKey($_.name)){$a+=@{$_.name=$_}}elseif($a[$_.name].LastW ...
+                 ~
Unexpected token '(' in expression or statement.
At line:7 char:17
+ if(!$ContainsKey($_.name)){$a+=@{$_.name=$_}}elseif($a[$_.name].LastW ...
+                 ~
Missing closing ')' after expression in 'if' statement.
At line:6 char:34
+ dir -rec $fb|?{!$PSIsContainer}|%{
+                                  ~
Missing closing '}' in statement block or type definition.
At line:7 char:26
+ if(!$ContainsKey($_.name)){$a+=@{$_.name=$_}}elseif($a[$_.name].LastW ...
+                          ~
Unexpected token ')' in expression or statement.
At line:7 char:46
+ if(!$ContainsKey($_.name)){$a+=@{$_.name=$_}}elseif($a[$_.name].LastW ...
+                                              ~~~~~~
Unexpected token 'elseif' in expression or statement.
At line:7 char:100
+ ... e=$_}}elseif($a[$_.name].LastWriteTime -gt $_.LastWriteTime){del $_.f ...
+                                                                 ~
Unexpected token '{' in expression or statement.
At line:7 char:117
+ ... e].LastWriteTime -gt $_.LastWriteTime){del $_.fullname}elseif($a[$_.n ...
+                                                            ~~~~~~
Unexpected token 'elseif' in expression or statement.
At line:7 char:171
+ ... lname}elseif($a[$_.name].LastWriteTime -lt $_.LastWriteTime){del $a[$ ...
+                                                                 ~
Unexpected token '{' in expression or statement.
At line:8 char:1
+ }
+ ~
Unexpected token '}' in expression or statement.
At line:1 char:69
+ ... pe C:\Users\CXMPV\ONEDRI~1\Desktop\Others\BACKUP~1.BAT|out-string|iex
+                                                                       ~~~
    + CategoryInfo          : ParserError: ( [Invoke-Expression], ParseException
    + FullyQualifiedErrorId : UnexpectedToken,Microsoft.PowerShell.Commands.InvokeExpressionCommand

TOP

回复 4# flashercs


    看起来运算也包含了回收站?虽然我清空了回收站,不知道它从哪找到的


What if: Performing the operation "Remove File" on target "\\ccns010006\Projects\CISS_SIB_AP_2020\02_Technip\SIB Project\007 Piping\ShareThem\Guideline\Caojing Site PDS Project Map.pdf".
What if: Performing the operation "Remove File" on target "\\ccns010006\Projects\CISS_SIB_AP_2020\02_Technip\SIB Project\007 Piping\ShareThem\Class\For Line List\CISS-ST-QC-301_Attachment.pdf".
What if: Performing the operation "Remove File" on target "\\ccns010006\Projects\CISS_SIB_AP_2020\02_Technip\SIB Project\007 Piping\ShareThem\Class\Pipe\CS_9196_20161101_EN.pdf".
What if: Performing the operation "Remove File" on target "\\ccns010006\Projects\CISS_SIB_AP_2020\02_Technip\SIB Project\007 Piping\ShareThem\Class\Pipe\CS_9251_20190301_EN.pdf".
What if: Performing the operation "Remove File" on target "\\ccns010006\Projects\CISS_SIB_AP_2020\02_Technip\SIB Project\007 Piping\ShareThem\Class\Ordering Standard\CS_9484_20190301_EN.pdf".
What if: Performing the operation "Remove File" on target "\\ccns010006\Projects\CISS_SIB_AP_2020\02_Technip\SIB Project\007 Piping\ShareThem\Folder\30_Engineering\02_Piping\30_02_01_Piping_Design\B1.3.6 Pipe Standard Support\Pipe Supports.pdf".
What if: Performing the operation "Remove File" on target "\\ccns010006\Projects\CISS_SIB_AP_2020\02_Technip\SIB Project\007 Piping\ShareThem\Class\Pipe\WN_1000-00312.pdf".
What if: Performing the operation "Remove File" on target "\\ccns010006\Projects\CISS_SIB_AP_2020\02_Technip\SIB Project\007 Piping\ShareThem\Class\Ordering Standard\WN_1057-00022.pdf".
What if: Performing the operation "Remove File" on target "\\ccns010006\Projects\CISS_SIB_AP_2020\02_Technip\SIB Project\007 Piping\ShareThem\Folder\30_Engineering\02_Piping\30_02_01_Piping_Design\B1.3.4 Insulation\WN_8101-00001.pdf".
What if: Performing the operation "Remove File" on target "\\ccns010006\Projects\CISS_SIB_AP_2020\02_Technip\SIB Project\007 Piping\ShareThem\Folder\30_Engineering\02_Piping\30_02_01_Piping_Design\B1.3.4 Insulation\WN_8101-00002.pdf".
What if: Performing the operation "Remove File" on target "\\ccns010006\Projects\CISS_SIB_AP_2020\02_Technip\SIB Project\007 Piping\ShareThem\Class\Ordering Standard\WN_8101-00003.pdf".

TOP

回复 7# Batcher


    只看文件名,因为我要备份的文件都是我做的,还总更新,具体信息可能都不同,只有文件名一致,如果不同,我自己也知道。唯一问题就是我可能今天放这个文件夹,明天放那个文件夹,所以希望能有一个指定目录下全子文件夹搜索。

TOP

回复 3# idwma


    $fa='\\ccns010006\Projects\CISS_SIB_AP_2020\02_Technip\SIB Project\007 Piping\ShareThem\'
$fb='C:\Users\CXMPV\OneDrive - Covestro\Desktop\Others\ShareThem\'

我输入这两个地址,结果是在后者地址的sharethem里又创建了一个sharethem,没看懂这段代码该怎么改。

我把后者地址改为$fb='C:\Users\CXMPV\OneDrive - Covestro\Desktop\Others\'重试,根目录放了几个文件,它们和子文件夹中的文件重复,结果并没有删除。

TOP

回复 10# idwma


    这种写法从理解上有点难度,我本来以为就是a目录备份成b目录,结果是a目录备份到b目录下。

确实是修改时间,不太可能有时间一样的,理论上我复制命令时,复制过来的都是最新的吧。
我找到一个查重的代码,其实只要这个就也行,复制命令我前缀一个xcopy就好了。
但你这个代码是不是更高级一些,先判断重复,再复制过去?

TOP

返回列表