2017-03-01 6 views
1

以下のバッチファイルが表示されます。ただし、PCにハードディスクが1台以上搭載されている場合は、どうやってするか?Windowsバッチ:FORループ、WMICディスクドライブの変数を設定します。

set _hdd= 
For /F "Skip=1 Delims=" %%A In (
    '"WMIC diskdrive Where (MediaType="Fixed hard disk media") Get Size"' 
) Do For /F "Tokens=1-2" %%B In ("%%A") Do set _hdd=%%B 
Echo %_hh% 
pause 
+0

あなたは出力がする何を期待していますか?システム内のすべての固定ディスクの合計サイズ? – Richard

+0

@リチャード..... PCの各ディスク(固定HDD)の合計サイズが欲しいです。ディスク1ディスク2ディスク3のサイズをcsvフォーマットの列に賢く表示します –

+0

'set _hdd = %% B '' echo %% B'で削除し、最後の 'Echo ... 'を削除してください。 – Aacini

答えて

0
@Echo off&SetLocal EnableExtensions EnableDelayedExpansion 
set cnt=0 
For /F "Skip=1 Delims=" %%A In (
    '"WMIC diskdrive Where (MediaType="Fixed hard disk media") Get Size"' 
) Do For /F "Tokens=1-2" %%B In ("%%A") Do (
    Set /A cnt+=1 
    set _hdd[!cnt!]=%%B 
) 
Set _hdd[ 
pause 

出力例:私の最後の答えと、すでに提供された応答と同様に

> Q:\Test\2017-03\01\SO_42530497.cmd 
_hdd[1]=2000396321280 
_hdd[2]=256052966400 
+0

あなたは何が設定されているのか説明してください。 –

+0

argsのコマンドセットはすべての環境変数を出力します。 argを指定すると、その部分から始まるal varsが得られます。 – LotPings

0

@Echo Off 
For /F "Skip=1 Delims=" %%A In (
    '"WMIC DiskDrive Where (MediaType Like 'Fixed%%') Get Index, Size"' 
) Do For /F "Tokens=1-2" %%B In ("%%A") Do Set "HD%%B=%%C" 
Set HD 
Timeout -1 
関連する問題