2011-08-04 93 views
1

我有一個批處理文件,我一直在嘗試創建一個會讀取兩個csv文件的文件,並根據這些差異執行操作。第一個文件是廣告用戶列表,第二個文件是我們nas上的廣告用戶文件夾列表。AD用戶文件夾清理批處理腳本

我想要一個批處理文件來比較他們,如果有一個廣告用戶沒有文件夾,創建該文件夾。如果有一個文件夾沒有用戶刪除該文件夾。但是我也希望能夠看到比較結果,然後讓它執行操作以確保一切正確。

I.E.

  • 廣告用戶文件

    Tom 
    Sam 
    George 
    Sally 
    
  • 文件夾文件

    Tom 
    George 
    Sally 
    Bill 
    

沒有文件夾山姆所以創建它,並有對條例草案,但沒有用戶的文件夾所以刪除它。

回答

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