FOR循环文件夹中的每个文件,并在BAT文件中执行COMP+MOVE



我有两个文件夹(目录A和目录B),它们以.csv文件的形式包含相同的财务报告,但值可能不同。

我试图通过删除相同的报告来协调这些报告,但我也试图编写一个.bat文件来执行比较,此外,根据是否发现特定文件的差异,将相应的文件转移到其他文件夹。

我希望.bat文件:

  1. 循环遍历目录A中的每个文件
  2. 对于每个文件,将其与目录B中的等效文件进行比较(COMP)(文件名相同)
  3. 如果没有差异-将文件从目录A和目录B分别移动(move)到目录C和目录D
  4. 如果存在差异,什么也不做;将文件保留在目录A和目录B中,然后继续循环

我的程序看起来有点像这样(显然不完整):

@echo off
:Main
FOR /D %%X ("C:youldirA") DO COMP %%X C:youldirB
IF ERRORLEVEL 0 GOTO Next1
:Next1
Copy C:youldirA C:youldirB 

显然,对于我来说,这是一段非常可怕且无法操作的代码。

任何帮助都将不胜感激!

更新自npocmaka的代码:

@echo off
Setlocal enableDelayedExpansion 
set "dirA=c:usersyoulautomationbinarycheckA*.csv"
set "dirB=c:usersyoulautomationbinarycheckB*.csv"
set "dirC=c:usersyoulautomationbinarycheckC"
for /f "tokens=* delims=" &&a in ("%dirA&") do (
        fc /b "%%a" "%dirB%" >nul 2>&1 && (
            move "%%a" "%dirC%"
        )
)
endlocal

未测试

@echo off
setlocal enableDelayedExpansion
set "dirA=c:dir1"
set "dirB=c:dir2"
for /f "tokens=* delims=" %%a in ('dir /b /s /a:-d "%dirA%"') do (
        set "path1=%%~pa"
        set "path2=!path1:%dirA%=%dirB%!"
        fc /b "%%~fa" "%%~da!path2!%%~nxa" >nul 2>&1 && (
            move "%%~fa" "%%~da!path2!%%~nxa"
        )
)
endlocal

假设您需要递归检查,并且dirAdirB在同一驱动器上。。。

最新更新