在批处理脚本中将变量字符串作为命令运行[关闭]

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%%

【讨论】:

原来在我正在使用的程序上运行它时出现问题。代码是正确的,但程序不允许这样做。不过,您的回答很有帮助,谢谢。

以上是关于在批处理脚本中将变量字符串作为命令运行[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

在c#中将字符串作为批处理文件运行

BAT/CMD中将命令执行结果赋值给变量

批处理脚本 |命令运行时闪烁屏幕

使用 system() 运行批处理脚本时命令窗口关闭得非常快

有没有办法在打开应用程序的 VS 中将批处理文件作为构建后事件运行?

python 作为“批处理”脚本(即从 python 运行命令)