コマンドラインからハードドライブのシリアル番号を取得する方法は?


39

Windows NTベース(特にWindows XPおよび7)のコマンドプロンプトから、ハードドライブのシリアル番号を変数として取得するにはどうすればよいですか?私が見ているのは、物理ハードディスクドライブのシリアル番号です


Windows XPの場合は、適切な方法でこの質問を参照してください。superuser.com/q/708146/24010
カナダルークREINSTATE MONICA

2
あなたは私のような多くのハードドライブを持っている場合は、であるあなたが知っているヘルプを代わりにこれを使用する:wmic diskdrive get name,size,model,SerialNumber...Source
Enissay

回答:


56

このコマンドを試してください

vol C:

これにより、Windowsからボリュームシリアル番号が取得されます。

wmic diskdrive get serialnumber

これにより、ハードドライブの製造元シリアル番号が取得されます。


彼の質問には、「コマンドラインからハードドライブのシリアル番号を取得する方法は?」というタイトルを書き直す必要があるかもしれません。
モアブ

使用するwmic diskdrive get serialnumberと、メッセージが表示されますInvalid XML。どういう意味ですか?
マックスベスター

の無効なクエリエラーが表示されwmic diskdrive get serialnumberます。
atoMerz 14

1
@Maxbesterと@atoMerz:両方の問題がありました。Windows XPを使用していたためにInvalid XML、複数のドライブが接続されていInvalid queryたことが原因でした。両方の問題については、この回答を参照してください。stackoverflow.com
マティアスブラウン14

2
あぶない! wmic diskdrive get serialnumber(およびWin32_DiskDrive一般的なWMIクラス)は、文字の各ペアを逆にしてシリアル番号を返します。そのため、ハードドライブのラベルに「abcd1234」と表示されている場合、WMIはシリアル番号を「badc2143」として報告します。 詳細はこちら
ロジョ14

5
  • あなたが見ているのは、ハードドライブのシリアル番号ではありません

  • ボリューム通し番号と呼ばれます。ボリューム/パーティションの作成およびフォーマット時に生成されます。

  • あなたは、コマンドプロンプトでコマンドを使用して、それを得ることができますC:\> vol c:場合はC:、あなたがのためにボリュームシリアル番号を取得したいドライブです。

  • あなたができることは、そのコマンドの出力をファイルにリダイレクトすることです:C:\> vol c: > myvol.txtそして、それはあなたのテキストファイルとして保存されますC:

  • ハイライト付きのスクリーンショットを添付しています:

ここに画像の説明を入力してください

  • ファイルはのルートに保存されました C:

ここに画像の説明を入力してください

  • これはmyvol.txtファイルがメモ帳でどのように見えるかです:

ここに画像の説明を入力してください


質問が編集されました。誤った情報をごめんなさい
カナダのルークレインステートモニカ

1
この回答に対する反対票を検討する前に、OPが元の質問を明確にする前に投稿されたことに注意してください。この答えは、元の質問に対して実際に正しかった。
私は

この方法で取得したシリアル番号は、SeaTools for Windowsのシリアル番号と一致しませんか?
PrimitiveNom

5

Moabの答えと同じ流れですが、今回はPowerShellを使用しています。

Get-CimInstance Win32_DiskDrive | Select-Object Model,SerialNumber

このコマンドは、Win32_DiskDriveWMIクラスのインスタンスを取得し、コンピューター内の各ディスクドライブのモデルと、そのインスタンスからの対応するシリアル番号を出力します。

この回答は、PowerShell 3.0以降を前提としています。古いバージョンを実行している場合はGet-WmiObject、の代わりに使用しGet-CimInstanceます。

Windows 8以降では、次のコマンドも使用できます。

Get-PhysicalDisk | Select-Object FriendlyName,SerialNumber

4

バッチファイルでの1つのアプローチは次のとおりです。

  1. テキストとしてシリアル番号を生成するVOLコマンド。
  2. FINDを押して、シリアル番号のある行のみに切り詰めます。
  3. FORシリアル番号のある行の5番目のトークン(区切り文字の間の部分)を取得します。
  4. 環境変数に割り当てるSET

for /f "tokens=5 delims= " %%a in ('vol c: ^| Find "Serial Number"') do (
set VOLSERIAL=%%a
)

質問が編集されました。誤った情報をごめんなさい
カナダのルークレインステートモニカ

2
この回答に対する反対票を検討する前に、OPが元の質問を明確にする前に投稿されたことに注意してください。この答えは、元の質問に対して実際に正しかった。
私は
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.