批处理文件中的For循环

Xnub

这是我的代码,用于在批处理脚本文件中创建用户并将用户添加到组中。

如您所见,我必须对TZ的各种变种进行硬编码。有什么方法可以读取该行,将第一个delimters捕获到一个变量中,然后使用它,然后将该变量重用于下一个delimter。我只想将此代码缩减为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 /F "tokens=1-7 delims=#" %%T IN ("%%D") DO (
   FOR %%S IN (%%T %%U %%V %%W %%X %%Y %%Z) DO (

      dsadd group cn="%%S",ou="GroupsOU",dc=advserver,dc=local
      dsmod group cn="%%S",ou="GroupsOU",dc=advserver,dc=local -addmbr cn="%%A %%B",ou="%%C",dc=advserver,dc=local 

   )
)

如果%%D包含通过#以下方式分隔的单词列表:“ Group1#Group2#Group3#Group4”,则使用此代码可以获得等效的结果:

set groups=%%D
FOR %%T IN ("!groups:#=" "!") DO (

   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 

)

不论代码中的组数是多少,先前的代码都可以正常工作 %%D

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

用于批处理文件中的循环和delim

来自分类Dev

批处理文件“ for”循环-多行

来自分类Dev

批处理文件循环遍历目录中的每个文件并计数每个文件中的记录

来自分类Dev

批处理文件中的if条件和for循环

来自分类Dev

Windows批处理文件处理-循环

来自分类Dev

使用“ goto”的批处理文件中的无限循环

来自分类Dev

在批处理文件中定义循环iMacros

来自分类Dev

在Powershell中执行批处理文件

来自分类Dev

对于批处理文件中的循环

来自分类Dev

批处理文件中的for循环问题

来自分类Dev

在批处理文件中循环浏览ASCII码

来自分类Dev

For循环在批处理文件中无法正常工作

来自分类Dev

批处理文件循环带空格

来自分类Dev

批处理文件:递归循环

来自分类Dev

批处理文件中的For循环从文件中错误地读取输入-循环失败

来自分类Dev

Windows批处理文件处理-循环

来自分类Dev

循环不在批处理文件中循环

来自分类Dev

在批处理文件中定义循环iMacros

来自分类Dev

批处理文件选择命令循环

来自分类Dev

循环调用另一个批处理文件的批处理文件

来自分类Dev

for文件循环批处理文件中的for文件循环

来自分类Dev

在批处理文件中循环浏览ASCII码

来自分类Dev

更改批处理文件中的变量以进行循环

来自分类Dev

在批处理文件中的for循环中转义括号

来自分类Dev

批处理文件以“”循环

来自分类Dev

批处理文件:逃脱!在 For 循环中

来自分类Dev

批处理文件中的嵌套 /F 循环和 If 语句

来自分类Dev

使用变量的批处理文件 FOR 循环

来自分类Dev

操作循环批处理文件输出