COMP + MOVE计划

时间:2014-11-09 12:52:56

标签: batch-file compare dos move

我正在寻找一个程序,它将文件夹A中的所有文件与文件夹B中的所有文件(循环)进行比较,如果程序发现文件相同,它会将文件从文件夹A移到文件夹C和文件夹B到文件夹D的文件夹 - 只留下文件夹A和文件夹B中存在差异的文件。

我下面的程序完成了90%,尽管非常简单但效果很好。我还没有能够编写的代码是文件从文件夹B到文件夹D的移动,因为我似乎无法获得如何引用从文件夹B中比较的文件它动了。

@echo off

FOR %%G IN ("C:\USERS\YOUL\AUTOMATION\FOLDER_A\*.xlsx") DO (
    Echo N | COMP %%G "C:\USERS\YOUL\AUTOMATION\FOLDER_B\*.xlsx" 
    IF NOT ERRORLEVEL 1 (
           MOVE %%G "C:\USERS\YOUL\AUTOMATION\FOLDER_C"
    )
)

例如,此代码应将FOLDER A中的Test.xlsx与FOLDER B中的Test.xlsx进行比较。如果文件不同,则不执行任何操作(即将它们保留在文件夹中)。如果文件相同,则从文件夹A中移动Test.xlsx - > FOLDER C(这是由代码处理)和来自FOLDER B的MOVE Test.xlsx - > FOLDER D(这是我的问题区域)。

从我的PoV - 看起来程序不知道如何将%% G引用到文件夹B中,所以当我试过这个时,我只能管理将整个文件夹B移动到文件夹D而不是什么我想要。

希望我提供了足够的信息。我正在寻找一个简单的解决方案,我认为这样一个简单的任务不需要复杂。

非常感谢。

2 个答案:

答案 0 :(得分:0)

在网上搜索“双杀手”。 这个小程序可以比较文件名或只是大小和校验和。经过分析,你可以检查第一个双打并移动它们,之后你可以检查最后一个双打并移动它们

当然这将涉及一些手工工作,但它会完成工作

希望有所帮助

编辑:抱歉,只是看到你需要一个批处理文件,但也许它有帮助

答案 1 :(得分:0)

我不是100%肯定,如果是这样,你想做什么, 也许你可以尝试一下?

@ECHO OFF
:Firstline
SET FOLDERA=C:\USERS\YOUL\AUTOMATION\FOLDER_A
SET FOLDERB=C:\USERS\YOUL\AUTOMATION\FOLDER_B
SET FOLDERC=C:\USERS\YOUL\AUTOMATION\FOLDER_C
SET FOLDERD=C:\USERS\YOUL\AUTOMATION\FOLDER_D

FOR %%G IN ("%FOLDERA%\*.xlsx") DO (
    ECHO N | COMP "%%~G" "%FOLDERB%\%%~nxG"
    IF NOT ERRORLEVEL 1 (
      MOVE "%%~G" "%FOLDERC%\%%~nxG"
      MOVE "%FOLDERB%\%%~nxG" "%FOLDERD%\%%~nxG"
    )
)

CHOICE /C YN /M "Continue?" /T 5 /D Y
IF ERRORLEVEL 2 GOTO :EOF
IF ERRORLEVEL 1 GOTO :Firstline

编辑: 现在这个脚本也可以循环 - 暂停5秒。 您可以在" /T"

之后更改值来编辑暂停