在 Windows 中运行批处理文件时显示 %variables% 为空白/丢失 [重复]

Posted

技术标签:

【中文标题】在 Windows 中运行批处理文件时显示 %variables% 为空白/丢失 [重复]【英文标题】:Displaying %variables% is blank/missing when running a batch file in Windows [duplicate] 【发布时间】:2021-07-15 02:39:52 【问题描述】:

好的,在我的 BAT(批处理)文件中,我试图检测 Windows 机器的物理内核数量,然后将其显示给用户。我正在使用我已确认在命令提示符中正常工作的“wmic”,以重新调整正确的信息。但是,当我尝试显示我存储的值时,它只会显示一个空格。

例如,当我运行它时,最后一行只显示“你有物理核心”,并且在“拥有”和“物理”这两个词之间只有一个空格,即使那是 %cpuvar2% 的值应该是显示。我无法弄清楚为什么这没有显示。我也尝试过使用@ECHO ON,但没有运气。

:labelCPU
@ECHO OFF

REM Intro message to let the user know what is happening
ECHO Detecting CPU cores...

REM Command to get the number of physical cores and store as a string var
wmic computersystem get numberoflogicalprocessors> cpuvar

REM Command to remove the first line of junk text from the returned string and save as a new var
MORE +1 cpuvar> cpuvar2

REM Output the number of physical cores to the user
ECHO You have %cpuvar2% physical cores!

系统:Windows 10 Pro,x64

【问题讨论】:

使用set 设置变量。 > 用于将输出发送到文本文件。 您在 Internet 上的什么地方看到了使用重定向将命令的输出存储到变量中的示例?您在第一个 WMIC 命令中使用重定向到文件,然后使用 MORE 命令显示该文件。您是否认为上次重定向后功能发生了变化? 【参考方案1】:

这里有一个简单的例子供你学习。

@Echo Off
SetLocal EnableExtensions DisableDelayedExpansion

Echo Detecting CPU cores...
Set "NumCores=0"
For /F EOL^=N %%G In ('%SystemRoot%\System32\wbem\WMIC.exe
 ComputerSystem Get NumberOfLogicalProcessors 2^>NUL'
) Do For /F "Tokens=*" %%H In ("%%G") Do Set "NumCores=%%H"
Echo You have %NumCores% physical cores!

Pause

【讨论】:

以上是关于在 Windows 中运行批处理文件时显示 %variables% 为空白/丢失 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

为啥我开机时显示找不到c:\windows\system32\mcdsrv16_080119.dll,

电脑启动时显示WINDOWS启动配置数据(BCD)存储文件包含一些无效信息,

如果Windows下Quick软件运行时显示无权限打开exe

我可以在过滤批处理文件(cmd)中的某些格式时显示目录中的文件吗?

为啥 Windows 任务管理器在写入非常大的文件时显示内存增加?我应该担心吗? [关闭]

安装软件时显示runtime错误怎么解决