这是我的密码
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 on,它只是输出代码,但没有运行它。任何帮助都是很好的
编辑只是为了解释更多,当我运行代码,一切运行良好,直到for循环,然后它被搞砸了。它甚至不会在for循环之后运行暂停--它只是结束。
发布于 2016-05-20 16:22:17
问题在于您如何创建文本文件。WMIC输出为Unicode。当For循环试图读取它时,它会以ANSI (默认)文件的形式打开它。这导致了奇怪的行为。
与其重定向输出,不如将其/output如下:
wmic /output:"uniprogs.txt" product get name 然后,您必须使用TYPE命令将它从Unicode转换为ANSI/ASCII,如下所示:
TYPE uniprogs.txt > ansiprogs.txt现在,在ansiprogs.txt上运行for循环,一切都应该是好的。
https://stackoverflow.com/questions/37348874
复制相似问题