这是我在批处理脚本文件中创建用户并将其添加到组的代码。
正如你所看到的,我必须从 TZ 对变量进行硬编码。有没有办法读取行将第一个定界符抓取到一个变量中并使用它,然后将该变量重新用于下一个定界符。我只想将此代码缩减为 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
)
)