Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops 正在尝试在批处理文件中查找CPU内核的数量_Loops_For Loop_Batch File_Cpu - Fatal编程技术网

Loops 正在尝试在批处理文件中查找CPU内核的数量

Loops 正在尝试在批处理文件中查找CPU内核的数量,loops,for-loop,batch-file,cpu,Loops,For Loop,Batch File,Cpu,下面是我一直在使用的工作代码,但正如您所看到的,它使用环境变量来表示处理器数量,这在当今大多数计算机上通常是cores*2。有没有一种方法可以使我的循环基于cpu中的内核数量和/或如何编辑循环以将处理器数量除以2 set loopcount=%NUMBER_OF_PROCESSORS% :loop START "Batch Script" MyProgram.exe set /a loopcount=loopcount-1 if %loopcount%==0 goto exi

下面是我一直在使用的工作代码,但正如您所看到的,它使用环境变量来表示处理器数量,这在当今大多数计算机上通常是cores*2。有没有一种方法可以使我的循环基于cpu中的内核数量和/或如何编辑循环以将处理器数量除以2

set loopcount=%NUMBER_OF_PROCESSORS%
:loop
START "Batch Script" MyProgram.exe
set /a loopcount=loopcount-1
if %loopcount%==0 goto exitloop
goto loop
:exitloop

对于任何相当于“我如何才能找到有关我的计算机的信息?”的问题,答案总是使用
wmic

for /F "delims=" %%A in ('wmic cpu get NumberOfCores /format:value ^| find "NumberOfCores"') do set %%A
for /L %%A in (1,1,%NumberOfCores%) do start "Batch Script" MyProgram.exe

当然,如果您正在寻找一种批量计算的方法,只需使用
set/a

set /a loopcount=%NUMBER_OF_PROCESSORS%/2

wmic cpu get NumberOfCores
给出了物理内核的数量,因此
%number\u of_处理器%/2
只返回了物理内核的一半that@phuclv-问题是找到内核的数量,所以我给出了两种方法,因为
%number\u of_PROCESSORS%
指的是逻辑处理器的数量,不是物理处理器的数量。啊,是的,我没有仔细阅读这个问题。但是除以2不能解决OP的问题。如果将来某些CPU的每个核心有多个线程,该怎么办?Intel Xeon Phi有4个线程/核心,PPC甚至有8个线程/核心的CPU。因此,唯一正确的方法是
wmic cpu get NumberOfCores
我倾向于同时创建
%Cores%
%Loops%
变量:
For/F“Tokens=2Delims==“%%G In('wmic cpu get NumberOfCores/Value')Do Set/A Cores=%%G,Loops=Cores/2>NUL
谢谢您让我了解wmic。我也不知道做数学的方法。第一次创建批处理文件,但现在我知道了