问题描述
我无法使此查询起作用:
set APPNAME="App Name"
for /f "skip=1delims= " %%t in ('wmic product where "name=%APPNAME%" get IdentifyingNumber') do set "guid=%%t"& goto printguid
:printguid
echo %guid%
我收到“无效的别名动词”错误。我无法弄清楚我错过了什么。
解决方法
关于import tkinter as tk
from tkinter import ttk
class App(ttk.Frame):
def __init__(self,parent,*args,**kwargs):
ttk.Frame.__init__(self,parent)
self.parent = parent
# Create Treeview
self.tree = ttk.Treeview(self.parent,column=('A','B'),selectmode='none',height=7)
self.tree.pack(expand=True,fill='both',side='top')
ttk.Style().configure("Treeview",background="#1C1C1C",fieldbackground="#1C1C1C",foreground="white")
# Setup column heading
self.tree.heading('#0',text=' Items',anchor='center')
self.tree.heading('#1',text=' A',anchor='center')
self.tree.heading('#2',text=' B',anchor='center')
# Insert some rows
self.tree.insert('','end',text="First item",value=("A's value","B's value"))
self.tree.insert('',text="Second item","B's value"))
if __name__ == '__main__':
root = tk.Tk()
root.geometry('900x600+300+300')
App(root)
root.mainloop()
的备注:不要忘记WMIC的输出是unicode!
可以通过将值传递到另一个 WMIC
循环来删除尾随的 <CR>
。这也删除了幻影“空白”行(实际上是 FOR /F
)
所以我在我这边用 <CR>
测试了这批产品,它的工作效率为 5/5
"APPNAME=VirtualDJ 8"
,
当枚举 Win32_Product 时,它实际上对每个产品执行完整的状态检查。这不仅会影响您的脚本时间,还可能意味着进行了修复/修改。因此官方建议不要使用 Win32_Product,(其中 Product
是 wmic 别名)
因此,我建议您解析注册表以获取信息,而且速度应该会快得多。
以下示例搜索键分支 HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\Products
下的所有数据值,并使用匹配子键的最后一个叶子,重新创建所需的 GUID 字符串,(相同字符串只是排序不同):
@Echo Off & SetLocal EnableExtensions
Set "AppName=App Name"
Set "FindCmd=%SystemRoot%\System32\find.exe"
Set "RegExe=%SystemRoot%\System32\reg.exe"
Set "RegKey=HKLM\SOFTWARE\Classes\Installer\Products"
Set "{}="
For /F "Delims=" %%G In ('^""%RegExe%" Query "%RegKey%" /S /F "%AppName%" /D /E
2^> NUL ^| "%FindCmd%" /I "%RegKey:*\=%"^"') Do @Set "{}=%%~nxG"
If Not Defined {} GoTo :EOF
Set GUID={%{}:~7,1%%{}:~6,1%%{}:~5,1%%{}:~4,1%%{}:~3,1%%{}:~2,1%%{}:~1,1%^
%{}:~,1%-%{}:~11,1%%{}:~10,1%%{}:~9,1%%{}:~8,1%-%{}:~15,1%%{}:~14,1%%{}:~13,1%^
%{}:~12,1%-%{}:~-15,1%%{}:~-16,1%%{}:~-13,1%%{}:~-14,1%-%{}:~-11,1%%{}:~-12,1%^
%{}:~-9,1%%{}:~-10,1%%{}:~-7,1%%{}:~-8,1%%{}:~-5,1%%{}:~-6,1%%{}:~-3,1%^
%{}:~-4,1%%{}:~-1%%{}:~-2,1%}
Set GUID & Pause
只需更改行 2
以将您的 App Name
占位符替换为您的实际产品名称。最后一行是可选的,只是为了确保结果符合您的期望。