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 一切都应该是好的。
这是我的代码
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 一切都应该是好的。