2016-04-08 14 views
0

Bir toplu iş dosyasından * .txt dosyasına erişmek istiyorum. * .txt içinde sayılar, satır satır sırayla. Parti bu sayıları almalı ve bir komutu yürütmek için onları bir değişkene ayırmalıdır.Harici bir * .txt dosyasındaki bir sonraki değişkeni kullanarak komutla takip edin

SETLOCAL EnableDelayedExpansion 

for /f "tokens=* delims=," %%x in (kbupdate.txt) do set Build=%%x 

wusa.exe /KB:%Build% /uninstall /quiet /norestart 

@echo off 
echo KB %Build% has been uninstalled. 

Bu betik * .txt dosyasındaki ilk giriş için mükemmel çalışır. Ama diğerleri için değil. Bu nedenle ben bir döngü-yapılandırılmış ve şimdi orada şaşırıp:

SETLOCAL EnableDelayedExpansion 

for /f "tokens=* delims=," %%x in (kbupdate.txt) do set Build=%%x 

:wusa 
wusa.exe /KB:%Build% /uninstall /quiet /norestart 

goto wusa 

@echo off 
echo KB %Build% has been uninstalled. 

döngü hala ilk girişi yakalar ve onu tekrarlar. Burada neyi yanlış yapıyorum? Ben * .txt ilk girişini kontrol etmek ve tüm satırlar bitene kadar böyle devam

wusa.exe /KB:%Build% /uninstall /quiet /norestart 

Sonra * .txt ikinci çizgi ile aynı komutu yapıyor sonra gerçekleştirmek ve senaryoyu zorlamak istiyoruz?

Neyin yanlış yaptığımı bana söyleyebilir mi?

En

Nino

cevap

0
SETLOCAL EnableDelayedExpansion 
for /f "delims=" %%x in (kbupdate.txt) do (
for %%y in (%%x) do (
    wusa.exe /KB:%%y /uninstall /quiet /norestart 
    echo KB %%y has been uninstalled. 
) 
) 

dosyanın her satır sırayla %%x uygulanır. bir sonraki satırda

for

( %%x içine okumak)
1,2,3,4 

görür ve böylece 1 2 alacak %%y her virgülle ayrılmış değer (Bu gibi eğer aynı zamanda boşluk ile ayrılmış olabilir) uygular 3 4

Sonra basitçe %build%

yerine %%y kullanmak
İlgili konular