Пакетный скрипт очистки папки пользователя AD - PullRequest
1 голос
/ 04 августа 2011

У меня есть пакетный файл, который я пытался создать, который будет читать два CSV-файла, сравнивать их и выполнять действия, основанные на различиях.Первый файл - это список пользователей рекламы, а второй - список папок пользователей рекламы в нашей сети.

Я хотел бы получить пакетный файл, который бы сравнивал их, и если есть пользователь рекламы, у которого нетПапка, создайте папку.Если есть папка, в которой нет пользователя, удалите ее.Но я также хотел бы иметь возможность увидеть результаты сравнения, прежде чем позволить ему выполнить действия, чтобы убедиться, что все правильно.

IE

  • для пользователяfile

    Tom
    Sam
    George
    Sally
    
  • папка file

    Tom
    George
    Sally
    Bill
    

Папка для Сэма не существует, поэтому создайте ее, и есть папка для Биллано ни один пользователь не может удалить его.

1 Ответ

0 голосов
/ 04 августа 2011

Примерно так может, по крайней мере, послужить хорошей отправной точкой, если не сразу решить проблему:

@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
<i>script to create the folder</i>
GOTO :EOF

:delfolder
<i>script to delete the folder</i>
GOTO :EOF
...