我有一个我一直在尝试创建的批处理文件,它会读取两个csv文件,比较它们并根据差异进行操作。第一个文件是广告用户列表,第二个文件是我们的网站上的广告用户文件夹列表。
我想要一个可以比较它们的批处理文件,如果有一个没有文件夹的广告用户,请创建该文件夹。如果有一个没有用户的文件夹删除该文件夹。但我还希望能够在执行操作之前看到比较结果,以确保一切正确。
即
广告用户文件
Tom
Sam
George
Sally
文件夹文件
Tom
George
Sally
Bill
没有Sam的文件夹所以创建它,并且有一个Bill的文件夹但没有用户删除它。
答案 0 :(得分:0)
这样的事情至少可以作为一个良好的起点,如果不能立即解决问题:
@ECHO OFF
SET "adusers=adusers.txt"
SET "folders=folders.txt"
COPY NUL "%adusers%.tmp" >NUL
COPY "%folders%" "%folders%.tmp" >NUL
FOR /F "usebackq delims=" %%U IN ("%adusers%") DO CALL :process "%%U"
ECHO Users without folders:
CALL :type "%adusers%.tmp"
ECHO.
ECHO Folders without users:
CALL :type "%folders%.tmp"
ECHO.
PAUSE
FOR /F "usebackq delims=" %%U IN ("%adusers%.tmp") DO CALL :addfolder "%%U"
FOR /F "usebackq delims=" %%U IN ("%folders%.tmp") DO CALL :delfolder "%%U"
DEL "%adusers%.tmp"
DEL "%folders%.tmp"
GOTO :EOF
:process
FIND %1 NUL || (ECHO %~1>>"%adusers%.tmp" & GOTO :EOF)
FIND /V %1 "%folders%.tmp.$$$"
DEL "%folders%.tmp"
RENAME "%folders%.tmp.$$$" "%folders%.tmp"
GOTO :EOF
:type
IF %~z1 == 0 (ECHO ^(none^)) ELSE (type %1)
GOTO :EOF
:addfolder
script to create the folder
GOTO :EOF
:delfolder
script to delete the folder
GOTO :EOF