2016-04-08 2 views
0

バッチファイルから* .txtにアクセスしたいと思います。 * .txtの内部には、行単位の数字が入ります。バッチは、この数値を受け取り、それらを解析してコマンドを実行する変数にする必要があります。外部* .txtファイルの次の変数を使用してコマンドをフォローアップ

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. 

これらのスクリプトは、* .txtファイルの最初のエントリに対して完全に機能します。しかし、他の人のためではありません。したがって、私はループを設定しましたが、私は今そこに行き着いています:

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. 

ループはまだ最初のエントリをキャッチし、それを繰り返します。私はここで間違って何をしていますか?すべての行が終了するまで、私は* .txtという最初のエントリをチェックし、

その後、

wusa.exe /KB:%Build% /uninstall /quiet /norestart 
を実行するためのスクリプトを強制したいと思い次にように* .txtとの2行目と同じコマンドを実行すると?

誰でも私が間違っていることを教えてもらえますか?

ベスト

、ニノ

答えて

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

ファイルの各行は順番に%%xに適用されます。

次の行でforは、このように12を得るであろう%%yに(必要であればまた、スペースで区切られた可能性があり)

1,2,3,4 

を見ている(%%xに読み込まれるように)それぞれカンマで区切った値を適用します34

そして、単に%build%

の代わりに %%yを使用
関連する問題