我有两个文件夹(目录A和目录B),它们以.csv
文件的形式包含相同的财务报告,但值可能不同。
我试图通过删除相同的报告来协调这些报告,但我也试图编写一个.bat
文件来执行比较,此外,根据是否发现特定文件的差异,将相应的文件转移到其他文件夹。
我希望.bat
文件:
- 循环遍历目录A中的每个文件
- 对于每个文件,将其与目录B中的等效文件进行比较(COMP)(文件名相同)
- 如果没有差异-将文件从目录A和目录B分别移动(move)到目录C和目录D
- 如果存在差异,什么也不做;将文件保留在目录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
假设您需要递归检查,并且dirA
和dirB
在同一驱动器上。。。