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