Läuft variable string als Befehl in batch-scripting
EDIT: Da war nichts falsch mit dem code unten. Der Fehler war von anderswo kommen.
Die variable "Befehl" ist der Befehl, den ich ausführen möchten. Die variable name ist ziehen eine Liste der computer-Namen. Wenn ich echo !Befehl! es gibt den Wert zurück, den ich nutzen möchte. Das sollte den Befehl ausführen benötigt, löschen Sie alle Maschinen, jedoch, wenn ich tatsächlich laufen !Befehl! oder " %Befehl%, die variable name nicht Hinzugefügt und es schlägt fehl.
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
Du musst angemeldet sein, um einen Kommentar abzugeben.
%command%
wird nicht funktionieren, weil es ist erweitert zu parse-Zeit, also der expandierte Wert ist der Wert, den der Befehl vor der Schleife ausgeführt wird.Ich weiß nicht, warum
!command!
funktioniert nicht. Normalerweise will man die normal verwenden expansion statt verzögerte Erweiterung bei der Ausführung von code in einer variable, weil die verzögerte Erweiterung Grenzen einige der Operationen, die Sie tun können. Es hat damit zu tun, wie der CMD-parser funktioniert. Aber ich sehe nichts in deinem Befehl sollte dazu führen, dass Probleme mit der verzögerten Erweiterung.Versuchen
call %%command%%