我想从批处理文件中访问* .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
答案 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