在批处理脚本中将变量字符串作为命令运行[关闭]
Posted
技术标签:
【中文标题】在批处理脚本中将变量字符串作为命令运行[关闭]【英文标题】:Running variable string as command in batch scripting [closed] 【发布时间】:2012-07-26 08:20:23 【问题描述】:编辑:下面的代码没有任何问题。错误来自其他地方。
命令变量是我要执行的命令。 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
【问题讨论】:
【参考方案1】:%command%
不会起作用,因为它在解析时被扩展,所以扩展的值是循环执行之前的命令值。
我不知道为什么!command!
不起作用。通常,在变量中执行代码时,您希望使用正常扩展而不是延迟扩展,因为延迟扩展限制了您可以执行的一些操作。它与 CMD 解析器的工作方式有关。但我在您的命令中看不到任何会导致延迟扩展问题的内容。
试试call %%command%%
【讨论】:
原来在我正在使用的程序上运行它时出现问题。代码是正确的,但程序不允许这样做。不过,您的回答很有帮助,谢谢。以上是关于在批处理脚本中将变量字符串作为命令运行[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
使用 system() 运行批处理脚本时命令窗口关闭得非常快