2016-04-08 4 views
0

Ich möchte auf eine * .txt aus einer Batchdatei zugreifen. Innerhalb der * .txt sind Zahlen Zeile für Zeile. Der Stapel sollte diese Zahlen aufnehmen und in eine Variable parsen, um einen Befehl auszuführen.Folge mit Befehl, benutze die nächste Variable in einer externen * .txt Datei

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. 

Die Skript funktioniert perfekt für den ersten Eintrag in der * .txt-Datei. Aber nicht für die anderen. Daher konfiguriert ich eine Loop- und ich bin stecken es jetzt:

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. 

Die Schleife fängt immer noch auf den ersten Eintrag und wiederholt sie. Was mache ich hier falsch? Ich möchte das Skript zwingen, den ersten Eintrag des * .txt zu überprüfen und dann

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

Dann tut den gleichen Befehl mit der zweiten Zeile in der * .txt durchführen und so weiter, bis alle Zeilen fertig sind?

Kann mir jemand sagen, was ich falsch mache?

Best, Nino

Antwort

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. 
) 
) 

jede Zeile der Datei zu %%x wiederum angewendet wird.

die for in der nächsten Zeile sieht

1,2,3,4 

(wie in %%x lesen) und wendet jedes Komma getrennt Wert (auch Leerzeichen getrennt sein könnte, wenn Sie mögen) zu %%y, die so 1 bekommen 234

einfach Dann %%y anstelle von %build% verwenden