AD用户文件夹清理批处理脚本

时间:2011-08-04 15:24:46

标签: batch-file compare

我有一个我一直在尝试创建的批处理文件,它会读取两个csv文件,比较它们并根据差异进行操作。第一个文件是广告用户列表,第二个文件是我们的网站上的广告用户文件夹列表。

我想要一个可以比较它们的批处理文件,如果有一个没有文件夹的广告用户,请创建该文件夹。如果有一个没有用户的文件夹删除该文件夹。但我还希望能够在执行操作之前看到比较结果,以确保一切正确。

  • 广告用户文件

    Tom
    Sam
    George
    Sally
    
  • 文件夹文件

    Tom
    George
    Sally
    Bill
    

没有Sam的文件夹所以创建它,并且有一个Bill的文件夹但没有用户删除它。

1 个答案:

答案 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