2012-07-27 749 views
9

编辑:下面的代码没有错。错误来自其他地方。在批处理脚本中运行变量字符串作为命令

命令变量是我想执行的命令。名称变量是拉取计算机名称的列表。当我回声!命令!它返回我想要使用的值。这应该运行所需的命令来删除所有的机器,但是,当我真正运行!命令!或%命令%,名称变量不会被添加并且失败。

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 

回答

10

%command%不会工作,因为它是在分析时膨胀,因此膨胀的值是命令的执行循环之前的值。

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

尝试call %%command%%

+0

结果发现有一个问题针对我正在使用的程序运行。代码是正确的,但程序不允许它。谢谢,你的回答很有帮助。 – spassen 2012-07-27 16:55:44

相关问题