3

My Installer スクリプトのシステム情報を取得しようとしています。これが私の簡単なバッチスクリプトです。

@echo off
setlocal enableextensions enabledelayedexpansion

echo System information now loading...

for /f "delims=" %%l in ('wmic os get * /format:list') do >nul 2>&1 set "OS_%%l"
for /f "delims=" %%l in ('wmic cpu get * /format:list') do >nul 2>&1 set "CPU_%%l"
set /a FreeSpace=0
for /f "skip=1 tokens=1,2" %%A in ('wmic logicaldisk get FreeSpace') do (
  if "%%B" neq "" for /f %%N in ('powershell !FreeSpace!+%%A') do (
    set FreeSpace=%%N
  )
)

echo wsh.echo cdbl(%FreeSpace%)/1024/1024/1024 > %temp%.\tmp.vbs
for /f %%a in ('cscript //nologo %temp%.\tmp.vbs') do set /a HDD_FreeSpace=%%a
del %temp%.\tmp.vbs

set /a RAM_Memory=%OS_TotalVisibleMemorySize%/1024
set /a CPU_Speed=%CPU_NumberOfLogicalProcessors%*%CPU_CurrentClockSpeed%

>>SystemInfo.log 2>&1 echo Operating System: %OS_Caption%%OS_OSArchitecture% (%OS_Version%, Build %OS_BuildNumber%)
>>SystemInfo.log 2>&1 echo Processor: %CPU_Name%
>>SystemInfo.log 2>&1 echo RAM: %RAM_Memory% MB
>>SystemInfo.log 2>&1 echo HDD Total Free Space: %HDD_FreeSpace% GB

>>SystemSource.log 2>&1 echo %OS_Version%
>>SystemSource.log 2>&1 echo %CPU_Speed%
>>SystemSource.log 2>&1 echo %OS_TotalVisibleMemorySize%
>>SystemSource.log 2>&1 echo %FreeSpace%

exit

出力 SystemInfo.log

Operating System: Microsoft Windows 7 Professional 32-bit (6.1.7601, Build 7601)
Processor: Intel(R) Core(TM)2 CPU          6600  @ 2.40GHz
RAM: 3069 MB
HDD Total Free Space: 61 GB

出力 SystemSource.log

6.1.7601
4784
3143284
66427858944

すべてが良さそうです。しかし、バッチ スクリプトに「Missing operator」と表示されました。メッセージが表示された理由はわかりませんが、すべての出力は正しいです。

クラッシュするかどうか?

4

1 に答える 1

5

を奪う@echo off/ a HDD_FreeSpace=375.6279296875を設定するのはラインセットであることが わかります。期間が無効です

c:\>for /F %a in ('cscript //nologo C:\Users\PREET~1.SAN\AppData\Local\Temp.\tmp.vbs') do set /a HDD_FreeSpace=%a

c:\>set /a HDD_FreeSpace=375.625617980957
Missing operator.

c:\>del C:\Users\PREET~1.SAN\AppData\Local\Temp.\tmp.vbs

代わりに* SET*で試してください

于 2012-10-29T04:10:35.827 に答える