10

编辑:下面的代码没有任何问题。错误来自其他地方。

命令变量是我要执行的命令。name 变量正在提取计算机名称列表。当我回显!命令!它返回我想要使用的值。那应该运行删除所有机器所需的命令,但是,当我实际运行!command!或 %command%,name 变量未添加且失败。

d:
cd "Program Files\admin"
setlocal EnableDelayedExpansion
SET string=%
for /f "tokens=*" %%a in (oldMachines.txt) do (
set name=%%a
set command=sbadmcl.exe AdminUser:admin -AdminPwd:password -Command:DeleteMachine -Machine:!name!
REM echo !name!
REM echo !command!
REM !command!
%command%
)
pause
4

1 回答 1

11

%command%不会起作用,因为它在解析时被扩展,所以扩展的值是循环执行之前命令的值。

我不知道为什么!command!不起作用。通常,在变量中执行代码时,您希望使用正常扩展而不是延迟扩展,因为延迟扩展会限制您可以执行的一些操作。它与 CMD 解析器的工作方式有关。但是我在您的命令中看不到任何会导致延迟扩展问题的内容。

尝试call %%command%%

于 2012-07-27T16:48:48.917 回答