2016-07-02 3 views
2

最初から、インストーラ(ゲームインストーラ)コマンドプロンプトを作成しました。現在使用可能なグラフィックメモリの変数を設定します。グラフィックスCMDによるメモリ情報

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

---このような何か...実行すると、ここにコードの代わりにどのようなものでしょうか?

答えて

2

私はすぐにHow To Identify Your Computer Video Card (The Manual Way)を発見し、行を含むバッチファイルをダウンロードし、ワールドワイドウェブを検索:私はadapterram出力の何行参照するバッチファイルを実行し、AdapterRAMでラインを見ることができた

@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 

とコンピュータに2つのビデオアダプタがインストールされているため、2行にバイト値が含まれています。

次のコードは、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/Gibibyte 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 more than 2 GB installed video memory 
rem exceeds the bit width of a 32-bit signed integer and arithmetic 
rem calculations are wrong on more than 2 GB 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 devision 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 WMIおよびWin32_VideoController classも参照してください。私のために読むのが面白かったのは、第2のウェブページのuint32 AdapterRAMでした。これは、ビデオアダプタRAMでは4 GB以上は使用できないことを意味します。

使用されているコマンドとその動作方法を理解するには、コマンドプロンプトウィンドウを開き、次のコマンドを実行して、コマンドごとに表示されているすべてのヘルプページをすべてよく読んでください。

  • call /?
  • del /?
  • echo /?
  • endlocal /?
  • for /?
  • goto /?
  • rem /?
  • wmic PATH /?
  • wmic PATH Win32_videocontroller GET /?

もリダイレクト演算子>の説明については、Microsoftの記事Using command redirection operatorsを読ん

  • wmic /?
  • type /?
  • set /?
  • 関連する問題