【发布时间】:2021-11-24 21:05:31
【问题描述】:
我需要从 MS Access 中以编程方式获取计算机上可用的处理器内核数。例如,我最常使用的计算机有一个 6 核处理器。我想通过 VBA 获取数字“6”。
到目前为止,我已经找到了两种通过 CMD 查找此信息的方法。 (1) 我可以执行echo %NUMBER OF PROCESSORS%这行,结果是6(简单干净,我喜欢)。 (2)我也试过wmic cpu get numberorcores,但是那个提示的结果如下:
NumberOfCores
6
我打算将输出通过管道传输到剪贴板并从中读取。我使用剪贴板的原因是避免创建、读取和删除小的数据文本文件。提示 (2) 有效,我可以成功地将输出通过管道传输到剪贴板并将其读入 VBA 中的变量,但它很混乱,我必须解析结果才能获得我需要的信息。我更喜欢使用提示符 (1),但它不起作用,问题似乎是 echo。我试过使用shell() 和CreateObject(WScript.Shell).Run 没有成功。我曾经尝试执行echo提示的字符串如下:
str = "echo %NUMBER OF PROCESSORS% | clip"
str = "cmd ""echo %NUMBER OF PROCESSORS% | clip"""
那么,有没有办法通过VBA成功向CMD发送echo提示并得到结果呢?
或者,在 VBA 中是否有不同的方法来获取内核数量?
TIA!
【问题讨论】:
-
在这个问题 stackoverflow.com/q/39274324/7599798 中查看 Randy Shuman 的答案。 VB.Script 解决方案也适用于 VBA(只需将
WScript.Echo替换为Debug.Print) -
@June7 (还有 FunThomas,但我一次只能@一个人)看起来Get Total Number of Cores from a computer WITHOUT HyperThreading 线程可能有几种很好的方法可以解决我的问题,所以谢谢指出来!