bat想要写一个卸载软件的脚本,最后宣布失败[未完待续...]
find 的用法:双引号,搜索内容是英文也要用双引号
C:\Users\clouder\Desktop\yanna>find '小智' products.txt
FIND: 参数格式不正确
C:\Users\clouder\Desktop\yanna>find "小智" products.txt
---------- PRODUCTS.TXT
0 亦云小智 亦云小智 {4CE4A510-3639-4F21-9E87-E33D6912DCD6} 20190307 C:\powerdude\ C:\Users\clouder\AppData\Roaming\Onecloud\亦云小智 2.8.0\install\912DCD6\ 5 2052 C:\WINDOWS\Installer\815ced0.msi 亦云小智 C:\WINDOWS\Installer\815ced0.msi {6C1B9C22-7F3B-4E80-90B3-F18B24935F7C} 亦云小智.msi Onecloud 2.8.0 0
wmic Microsoft Management Instrument Console
echo %~dp0
C:\Users\clouder\Desktop\yanna>wmic /output:%~dp0products.txt product
rem 获得包含"小智"一行的内容
find "小智" products.txt>find.txt
本来想写个bat卸载指定第三方软件,最后失败告终,觉得bat语法很奇怪,不好理解啊。
思路:
1.用wmic命令查到所有已安装产品信息并导出到products.txt
wmic /output:%~dp0products.txt product
2.在products.txt 中找到包含“小智”关键字的行
find "小智" products.txt>find.txt
type find.txt
3.在find.txt中有2行,第一行是不想要的内容,要的是第2行第10列的内容,不知道怎么取到。在linux下就会用sed -d '1p'; awk -F ' ' '{print $10}'拿到C:\WINDOWS\Installer\815ced0.msi
C:\Users\clouder\Desktop\yanna>type find.txt
---------- PRODUCTS.TXT
0 亦云小智 亦云小智 {4CE4A510-3639-4F21-9E87-E33D6912DCD6} 20190307 C:\powerdude\ C:\Users\clouder\AppData\Roaming\Onecloud\亦云小智 2.8.0\install\912DCD6\ 5 2052 C:\WINDOWS\Installer\815ced0.msi 亦云小智 C:\WINDOWS\Installer\815ced0.msi {6C1B9C22-7F3B-4E80-90B3-F18B24935F7C} 亦云小智.msi Onecloud 2.8.0 0
4.运行C:\WINDOWS\Installer\815ced0.msi 卸载程序卸载