Advertisement
BrainWaveCC

GetWMICInfo.BAT

Jun 26th, 2024 (edited)
184
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Batch 3.42 KB | Source Code | 0 0
  1. @REM - GetWMICInfo.BAT (26 Jun 2024 // 30 Jun 2024 / 26 Jun 2024): Obtain and Format WMIC Info
  2. @ECHO OFF
  3.  
  4.  ::: This script will obtain some WMIC info, and format the storage sizes
  5. ::: to KB, MB, GB or TB as preferred. For convenience, two subroutines are
  6. ::: provided.  One of the subroutines uses all native code, and the other
  7. ::: relies on a 3rd party utility: CCALC.EXE
  8. ::: (https://www.majorgeeks.com/files/details/brainwave_ccalc.html)
  9. :::
  10. ::: I was going to provide only the native option, but file sizes are
  11. ::: regularly large enough to generate errors, so I provided both routines.
  12. :::
  13. ::: If you want the debug code to run, run the batch file with any parameter.
  14. :::   i.e. GetWMICInfo.BAT #
  15. :::
  16. ::: The full script can be found here ..... https://pastebin.com/L0PjaNK4
  17. :::
  18.  
  19.  
  20. :Variables
  21.  SETLOCAL ENABLEDELAYEDEXPANSION
  22.  SET #DEBUG=%~1
  23.  SET #ITERATIONS=19
  24.  
  25.  
  26.  rem -- Parse WMIC and format returned drive info
  27. :ParseWMIC
  28.  FOR /F "SKIP=2 TOKENS=1-7 DELIMS=," %%a IN ('WMIC PARTITION GET Diskindex^,Name^,Index^,Description^,Size /FORMAT:CSV') DO (
  29.     CALL :ConvertNumber_Old "%%~g" MB #SIZE_OLD
  30.     CALL :ConvertNumber     "%%~g" MB #SIZE_MB
  31.     CALL :ConvertNumber     "%%~g" GB #SIZE_GB
  32.     ECHO DiskIndex      : %%c
  33.     ECHO PartitionIndex : %%d
  34.     ECHO Partition Info : %%e,%%f
  35.     ECHO Partition Type : %%b
  36.     ECHO Raw Size       : %%g
  37.     ECHO Size           : !#SIZE_OLD!
  38.     ECHO Size           : !#SIZE_MB!
  39.     ECHO Size           : !#SIZE_GB!
  40.     ECHO:
  41.  )
  42.  
  43.  
  44.  rem -- Test My Calculation Routines (set #DEBUG=TRUE if you want this to run)
  45. :RANDOM_MATH_TEST
  46.  IF DEFINED #DEBUG (
  47.      ECHO:
  48.      ECHO *** RANDOM NUMBER TESTING ***
  49.      ECHO:
  50.      FOR /L %%z IN (1,1,%#ITERATIONS%) DO (
  51.          SET /A #VAL=!RANDOM! * !RANDOM! * 5
  52.          CALL :ConvertNumber_Old "!#VAL!" MB #SIZE_OLD
  53.          CALL :ConvertNumber     "!#VAL!" MB #SIZE_MB
  54.          CALL :ConvertNumber     "!#VAL!" GB #SIZE_GB
  55.          ECHO Displaying !#VAL! in MB ^& GB
  56.          ECHO  - Using Native Calculation .... !#SIZE_OLD!
  57.          ECHO  - Using CCALC [MB] ............ !#SIZE_MB!
  58.          ECHO  - Using CCALC [GB] ............ !#SIZE_GB!
  59.          ECHO:
  60.      )
  61.  )
  62.  
  63.  
  64. :ExitBatch
  65.  TIMEOUT 60
  66.  ENDLOCAL
  67.  GOTO :EOF
  68.  
  69.  
  70.  rem -- SUBROUTINE: Convert Large Number to KB, MB, GB, TB or PB (using CCALC.EXE)
  71. :ConvertNumber
  72. rem %1 = Current Number to be Converted/Formatted
  73. rem %2 = Unit of Measurement to be Used
  74. rem %3 = New Variable To Store Converted/Formatted Number
  75.  
  76.  IF "%~3"=="" GOTO :EOF
  77.                    SET #OPERAND=+ 0
  78.  IF /I "%~2"=="KB" SET #OPERAND=/ 1024
  79.  IF /I "%~2"=="MB" SET #OPERAND=/ 1024 / 1024
  80.  IF /I "%~2"=="GB" SET #OPERAND=/ 1024 / 1024 / 1024
  81.  IF /I "%~2"=="TB" SET #OPERAND=/ 1024 / 1024 / 1024 / 1024
  82.  
  83.  SET #NUM=%~1
  84.  SET #NUM=!#NUM:-=!
  85.  FOR /F %%N IN ('CCALC !#NUM! %#OPERAND% -f "#,##0.000" 2^>NUL') DO SET %~3=%%~N %~2
  86.  GOTO :EOF
  87.  
  88.  
  89.  rem -- SUBROUTINE: Convert Large Number to KB, MB, GB, TB or PB
  90. :ConvertNumber_Old
  91. rem %1 = Current Number to be Converted
  92. rem %2 = Unit of Measurement to be Used
  93. rem %3 = New Variable To Store Converted Number
  94.  
  95.  IF "%~3"=="" GOTO :EOF
  96.                    SET #OPERAND=+ 0
  97.  IF /I "%~2"=="KB" SET #OPERAND=/ 1024
  98.  IF /I "%~2"=="MB" SET #OPERAND=/ 1024 / 1024
  99.  IF /I "%~2"=="GB" SET #OPERAND=/ 1024 / 1024 / 1024
  100.  IF /I "%~2"=="TB" SET #OPERAND=/ 1024 / 1024 / 1024 / 1024
  101.  
  102.  SET #NUM=%~1
  103.  SET #NUM=!#NUM:-=!
  104.  SET %~3=Could Not Calculate
  105.  SET /A %~3=!#NUM! %#OPERAND% 2>NUL
  106.  SET %~3=!%~3! %~2
  107.  GOTO :EOF
  108.                          
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement