gpt4 book ai didi

CMD 的图形内存信息

转载 作者:行者123 更新时间:2023-12-02 04:08:28 26 4
gpt4 key购买 nike

从头开始,我使用命令提示符创建了一个安装程序(游戏安装程序)。我想为游戏上的可用图形内存设置一个变量当前正在运行的 PC ...类似这样 ---

set gfxmem=[code here]
if %gfxmem% leq 1000[mb or value] ( echo Low Graphics memory ) else echo Supported

什么可以代替这里的代码

最佳答案

我搜索了万维网,很快找到了 How To Identify Your Computer Video Card (The Manual Way) 并下载了包含以下行的批处理文件:

@echo off
wmic PATH Win32_videocontroller GET description
wmic PATH Win32_videocontroller GET adapterram
wmic PATH Win32_videocontroller GET driverversion
wmic PATH Win32_videocontroller GET pnpdeviceid
pause

我执行了批处理文件来查看带有 adapterram 的行的输出,并且可以看到带有 AdapterRAM 的行和带有字节值的两行,因为有两个视频适配器安装在我的电脑上。

接下来,我使用 How to get the % of memory utilization using WMIC in batch script? 上的答案和批处理代码本身的注释中详细描述的编码技术开发了以下批处理代码。

@echo off
goto :GetVideoMemorySize

rem Note: MB = MiB and GB = GiB in this batch file, see
rem https://en.wikipedia.org/wiki/Byte for details on GiB.

rem The command WMIC with the parameters PATH Win32_videocontroller GET
rem AdapterRAM outputs one line per video adapter. The output of WMIC is
rem in UTF-16 LE with BOM. The output is redirected to a temporary file
rem which is printed by command TYPE to STDOUT which makes a better job
rem on UNICODE to ASCII conversion as command FOR.

rem Memory of a video adapter is in bytes which can be greater 2^31 (= 2 GB).
rem Windows command processor performs arithmetic operations always with
rem 32-bit signed integer. Therefore 2 GB or more installed video memory
rem exceeds the bit width of a 32-bit signed integer and arithmetic
rem calculations are wrong on 2 GB or more installed video memory. To
rem avoid the integer overflow, a subroutine is called which makes the
rem calculation depending on string value length, i.e. number of bits.

rem Create a copy of current environment variables. Enabling additionally
rem delayed environment variable expansion is not required for this task.
rem Command extensions are enabled by default, but nevertheless enable it.

:GetVideoMemorySize
setlocal EnableExtensions
set "VideoTotalMemory=0"
set "VideoAdapterCount=0"

%SystemRoot%\System32\wbem\wmic.exe PATH Win32_videocontroller GET AdapterRAM >"%TEMP%\AdapterRam.tmp"

for /F "skip=1" %%M in ('type "%TEMP%\AdapterRam.tmp"') do (
set /A VideoAdapterCount+=1
set "VideoAdapterMemory=%%M"
call :AddVideoMemory
)
del "%TEMP%\AdapterRam.tmp"

if "%VideoAdapterCount%" == "1" (
set "AdapterInfo="
) else (
set "AdapterInfo= of %VideoAdapterCount% video adapters"
)

echo Total video memory is: %VideoTotalMemory% MB%AdapterInfo%
echo.
if %VideoTotalMemory% LEQ 1024 (
echo Low Graphics memory
) else (
echo Supported
)

endlocal
goto :EOF

rem This subroutine calculates the total video adapter memory correct
rem only for video adapter memory sizes being either less than 1 GB or
rem an exact multiple of 1 GB. The calculation is wrong for values like
rem 1.5 GB, 2.5 GB and similar values.

rem For a value with not more than 9 characters the memory size in MB
rem can be directly calculated with a division by 1024 * 1024 = 1048576.

rem To avoid an integer overflow on video memory sizes of 1 GB and more,
rem the last 6 characters are removed from bytes value and the remaining
rem characters are divided by 1073 to get the number of GB which is next
rem multiplied with 1024 to get the value in MB.

rem 1 GB = 1.073.741.824 bytes = 2^30
rem 2 GB = 2.147.483.648 bytes = 2^31
rem 4 GB = 4.294.967.296 bytes = 2^32
rem 8 GB = 8.589.934.592 bytes = 2^33
rem 16 GB = 17.179.869.184 bytes = 2^34
rem 32 GB = 34.359.738.368 bytes = 2^35

:AddVideoMemory
if not "%VideoAdapterMemory:~9,1%" == "" goto AtLeast1GB
set /A VideoTotalMemory+=VideoAdapterMemory/1048576
goto :EOF

:AtLeast1GB
set "VideoAdapterMemory=%VideoAdapterMemory:~0,-6%"
set /A VideoTotalMemory+=(VideoAdapterMemory/1073)*1024
goto :EOF

我在具有管理员权限的 Windows XP SP3 x86 和 Windows 7 SP1 x64 上测试了批处理文件,它在两台计算机上都运行良好。

另请参见 User Account Control and WMIWin32_VideoController class 。对我来说有趣的是第二个网页上的uint32 AdapterRAM。这意味着视频适配器 RAM 不可能超过 4 GB。

为了了解所使用的命令及其工作原理,请打开命令提示符窗口,执行以下命令,并仔细阅读每个命令显示的所有帮助页面。

  • 调用/?
  • 删除/?
  • 回显/?
  • endlocal/?
  • 对于/?
  • 转到/?
  • 雷姆/?
  • setlocal/?
  • 设置/?
  • 输入/?
  • wmic/?
  • wmic 路径/?
  • wmic 路径 Win32_videocontroller GET/?

另请阅读 Microsoft 文章 Using command redirection operators,了解重定向运算符 > 的说明。

关于CMD 的图形内存信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38158066/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com