【发布时间】:2013-03-09 10:00:20
【问题描述】:
在我的上一个问题中,我讨论了我是如何编写一个新的大众用户创建脚本的,现在大约有 95 行。我收到了该问题的解决方案,并尝试将其实现到代码的不同部分。现在我正在尝试使用嵌套在创建用户的主 for 循环中的 for 循环将用户从 Excel 文档添加到多个组,邮件启用它们等。
现在这就是我所拥有的:
setlocal enabledelayedexpansion
for /f "skip=37 tokens=* delims=," %%a in (Settings.ini) do (
set Groups=%%a
)
for /f "skip=1 Tokens=1,2,3 Delims=," %%a in (C:\UserList.csv) do (
set User=%%a
set "GroupsAdd=net group %groups:,= /add !User! && net group %"
!GroupsAdd! /add %%a
)
如您所见,脚本会跳过设置文件中的三十七行,直到到达所需的行并将组变量设置为该行。下一个 for 循环尝试将用户添加到设置文件中定义的指定组,例如学生、StudentProxy、Year12 等。
这就是代码失败的地方,它把我带到了网络组的帮助菜单,我已经尝试了其他的东西,比如不使用延迟扩展,并提供了一个错误说明:
/Add is not recognised as an internal or external command, operable program or batch file.
任何帮助将不胜感激。
TL;DR 我需要创建一个函数,该函数将使用网络组将 Excel 文件中的用户添加到设置文件中的指定组,但是我现在这样做的方式不断失败,我需要帮助。强>
【问题讨论】:
-
GroupsAdd 可能为空。 SET "GroupsAdd... 行应该做什么?
-
GroupsAdd 不为空。设置文件中的行包含组,当我将 echo 设置为 off 时,它会写入正确的用户组。 GroupsAdd 应该创建一个命令:net group GROUPNAME /add USERNAME 并且每次组更改时都会更改 - 即如果我定义了三个组,它将执行三次。
-
您正在尝试用
/add !User! && net group更改GroupsAdd变量中所有出现的逗号。我可以给你两个不起作用的原因: 1.GroupsAdd中不会有任何逗号,因为设置它的for循环的分隔符是逗号。 2. 里面包含&&,需要转义,否则会失败。我假设你不想这样做......? -
即使没有将分隔符设置为逗号,它仍然无法工作。 && 也应该可以工作,因为 set 函数被引号包围。请注意,如果脚本不必从 Excel 文件中读取,这将非常有效。 ETA:以逗号作为分隔符,它仍会将 Groups 设置为整个字符串,而不是用逗号分隔。
-
何时读取 Excel 文件?我猜它在以前的代码中的某个地方。我不太确定它是否可以从 Excel 文件中读取,你以前做过吗?
标签: for-loop batch-file cmd