WMIC 和 FOR 循环

WMIC and FOR loops

这是我的代码

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 循环结束后的暂停。

问题在于您创建文本文件的方式。 WMIC 输出是 Unicode。当 For 循环尝试读取它时,它会将其作为 ANSI(默认)文件打开。这会导致奇怪的行为。

不是重定向你的输出,/output它是这样的:

wmic /output:"uniprogs.txt" product get name 

然后您必须使用 TYPE 命令将其从 Unicode 转换为 ANSI/ASCII:

TYPE uniprogs.txt > ansiprogs.txt

现在 运行 你的 for 循环 ansiprogs.txt 一切都应该是好的。