Ejecutar cadena variable como comando en secuencias de comandos por lotes [cerrado]

EDITAR: No había nada malo con el código a continuación. El error venía de otra parte.

La variable de comando es el comando que quiero ejecutar. La variable de nombre está extrayendo una lista de nombres de computadora. Cuando hago eco de !command! devuelve el valor que quiero usar. Eso debería ejecutar el comando necesario para eliminar todas las máquinas, sin embargo, cuando ejecuto !command! o %comando%, la variable de nombre no se agrega y falla.

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

preguntado el 27 de julio de 12 a las 16:07

1 Respuestas

%command% no funcionará porque se expande en el momento del análisis, por lo que el valor expandido es el valor del comando antes de que se ejecute el ciclo.

No sé por qué !command! No funciona. Normalmente, desea utilizar la expansión normal en lugar de la expansión retrasada al ejecutar código en una variable porque la expansión retrasada limita algunas de las operaciones que puede realizar. Tiene que ver con cómo funciona el analizador CMD. Pero no veo nada en su comando que debería causar problemas con la expansión retrasada.

Trata call %%command%%

Respondido 27 Jul 12, 17:07

Resulta que hubo un problema al ejecutarlo contra el programa que estoy usando. El código es correcto pero el programa no lo permite. Sin embargo, su respuesta fue útil, gracias. - pasar

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.