所以这是我的代码
wmic product get name > "programs.txt"
FOR /f %%a IN (programs.txt) DO (
pause
echo %%a
set /p variable= Delete %%a?
pause
IF "%variable%" == "yes" (
wmic product where name="%%a" call uninstall
cls
) ELSE (
cls
)
)
我正在尝试创建一个程序,它将显示已安装的程序并询问是否要卸载它们。代码运行良好,直到for循环,但它只是退出。我用@echo尝试了它,它只是输出代码但没有运行它。任何帮助都会很棒
[编辑]只是为了解释一下,当我运行代码时,一切都运行良好,直到for循环然后它搞砸了。它甚至不会在for循环结束后暂停运行。
答案 0 :(得分:1)
问题在于如何创建文本文件。 WMIC输出是Unicode。当For循环尝试读取它时,它会将其作为ANSI(默认)文件打开。这导致奇怪的行为。
而不是重定向输出,/output
就像这样:
wmic /output:"uniprogs.txt" product get name
然后你必须使用TYPE命令将它从Unicode转换为ANSI / ASCII:
TYPE uniprogs.txt > ansiprogs.txt
现在在ansiprogs.txt上运行你的for循环,一切都应该是好的。