1
這是我創建用戶並將其添加到批處理腳本文件中的組的代碼。在批處理文件中循環
正如你所看到的,我必須從T-Z永久變得硬編碼。是否有任何方法可以讀取該行,將第一個分隔符轉換爲可變分隔符,然後使用該分隔符,然後重新使用該分隔符作爲下一個分隔符。我只是想將這段代碼切換到for內部的2個dsadd組命令,但得到相同的結果。
%% D只是沿着「Group1#Group2#Group3#Group4」的行可以容納未知數量的組。
FOR /F "tokens=1-7 delims=#" %%T IN ("%%D") DO (
IF NOT [%%T] == [] (
dsadd group cn="%%T",ou="GroupsOU",dc=advserver,dc=local
dsmod group cn="%%T",ou="GroupsOU",dc=advserver,dc=local -addmbr cn="%%A %%B",ou="%%C",dc=advserver,dc=local
)
IF NOT [%%U] == [] (
dsadd group cn="%%U",ou="GroupsOU",dc=advserver,dc=local
dsmod group cn="%%U",ou="GroupsOU",dc=advserver,dc=local -addmbr cn="%%A %%B",ou="%%C",dc=advserver,dc=local
)
IF NOT [%%V] == [] (
dsadd group cn="%%V",ou="GroupsOU",dc=advserver,dc=local
dsmod group cn="%%V",ou="GroupsOU",dc=advserver,dc=local -addmbr cn="%%A %%B",ou="%%C",dc=advserver,dc=local
)
IF NOT [%%W] == [] (
dsadd group cn="%%W",ou="GroupsOU",dc=advserver,dc=local
dsmod group cn="%%W",ou="GroupsOU",dc=advserver,dc=local -addmbr cn="%%A %%B",ou="%%C",dc=advserver,dc=local
)
IF NOT [%%X] == [] (
dsadd group cn="%%X",ou="GroupsOU",dc=advserver,dc=local
dsmod group cn="%%X",ou="GroupsOU",dc=advserver,dc=local -addmbr cn="%%A %%B",ou="%%C",dc=advserver,dc=local
)
IF NOT [%%Y] == [] (
dsadd group cn="%%Y",ou="GroupsOU",dc=advserver,dc=local
dsmod group cn="%%Y",ou="GroupsOU",dc=advserver,dc=local -addmbr cn="%%A %%B",ou="%%C",dc=advserver,dc=local
)
IF NOT [%%Z] == [] (
dsadd group cn="%%Z",ou="GroupsOU",dc=advserver,dc=local
dsmod group cn="%%Z",ou="GroupsOU",dc=advserver,dc=local -addmbr cn="%%A %%B",ou="%%C",dc=advserver,dc=local
)
)
第一個工作正常,完美,但第二個對我不起作用。它在做一個For循環並且不能設置變量時做了。我打開SETLOCAL ENABLEDELAYEDEXPANSION在頂部和變量設置好,但我仍然似乎無法使用它在(%groups:#=%)區域。我需要改變它!或者其他的東西 ? – Xnub
是的,只需用驚歎號改變百分數:'(!groups:#=!)' – Aacini
%% T似乎只能保持#現在。 – Xnub