2012-07-27 17 views
9

DÜZENLEME: Aşağıdaki kodda yanlış bir şey yoktu. Hata başka bir yerden geliyordu.Toplu komut dosyası olarak değişken dizeyi komut olarak çalıştırma

Komut değişkeni, yürütmek istediğim komuttur. İsim değişkeni bilgisayar isimleri listesini çekiyor. Ne zaman yanımda! Kullanmak istediğim değeri döndürür. Bu, tüm makineleri silmek için gereken komutu çalıştırmalı, ancak aslında koşarken! veya% komutu%, isim değişkeni eklenmedi ve başarısız. genişletilmiş değer öncesinde döngü yürütülmesi için komut değeridir yüzden, ayrıştırma anda genişletilir çünkü

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 

cevap

10

%command% çalışmaz.

Neden !command! çalışmıyor bilmiyorum. Normalde gecikmeli genişleme yerine normal genişlemeyi kullanmak istiyorsanız, bir değişkende kod çalıştırırken gecikmeli genişleme işlemleri yapabileceğiniz bazı işlemleri sınırlar. CMD ayrıştırıcısının nasıl çalıştığıyla ilgili. Fakat komutada gecikmeli genişleme ile ilgili sorunlara neden olan hiçbir şey göremiyorum.

call %%command%%

+0

kullanıyorum programa karşı çalışan bir sorun olduğu ortaya çıktı deneyin. Kod doğru ama program buna izin vermiyor. Cevabınız yardımcı oldu, teşekkürler. – spassen

İlgili konular