使用外部* .txt文件中的下一个变量跟进命令

时间:2016-04-08 10:10:37

标签: batch-file command batch-processing

我想从批处理文件中访问* .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中的第二行执行相同的命令,依此类推,直到完成所有行?

谁能告诉我我做错了什么?

Best,Nino

1 个答案:

答案 0 :(得分: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会看到

1,2,3,4

(读入%%x)并将每个以逗号分隔的值(如果您愿意,也可以按空格分隔)应用于%%y,这将得到1 {{1} } 2 3

然后只需使用4代替%%y