web-dev-qa-db-ja.com

数値出力のみのバッチを使用してOSアーキテクチャを見つける方法は?

次のコマンドを実行しています

@echo off
cls
wmic os get osarchitecture > win.txt
for /f "skip=1" %%G IN (win.txt) do echo %%G
pause>nul

実際の出力はです

Echo is off

期待される出力

64

または

32

ユーザーアーキテクチャによって異なります。

win.txtで出力を取得しています

OSArchitecture  
64-bit     

しかし、cmdウィンドウでは空白のecho is off donno why!コードを修正してください。出力に必要なのは64または32だけです。

4
Philip

出力に必要なのは64または32だけです。

次のバッチファイル(GetBits.cmd)を使用します。

@echo off
Setlocal EnableDelayedExpansion
rem use findstr to strip blank lines
for /f "usebackq skip=1 tokens=*" %%i in (`wmic OS get OSArchitecture ^| findstr /r /v "^$"`) do (
  set "_bits=%%i"
  rem extract first 2 characters
  set "_bits=!_bits:~0,2!"
  echo !_bits!
  )
endlocal

出力例:

F:\test>GetBits.cmd
64

F:\test>

参考文献

3
DavidPostill

動作する1つのライナーは次のとおりです。

IF EXIST %windir%\syswow64 ( ECHO 64 ) ELSE ( ECHO 32 )
2
Larryc

これを使って:

@echo off
cls 
for "tokens=2 delims==- " %%a in ('wmic os get osarchitecture /format:value') do echo %%a 
pause >nul 
0
Wasif Hasan