バッチスクリプトでPC名を見つける方法


18

バッチプログラムを実行しているPCの名前を見つけるにはどうすればよいですか?

バッチプログラムを実行しているPCの名前を見つけて、変数として保存できるようにします。助けがありますか?


4
を使用して、cmdまたはpowershellコマンドラインからシステムのホスト名を取得できますhostname。varとして保存する必要はなく、必要に応じてインラインで呼び出してください。
フランクトーマス

@FrankThomas-代わりに(おそらく短い例で)答えとしてこれを提供してみませんか?
ライフル

2
hostnameはexeであり、コンソールにマシン名を出力しますが、バッチファイルにキャプチャするのは簡単ではありません。幸いなことに、すでに環境変数が設定されており、ComputerName一般的なWindowsシステムで使用できる()
ヴィカスグプタ

回答:


10

Vikas Guptaが回答したよう%COMPUTERNAME%に、コンピューター名が既に含まれている定義済みの環境変数を使用できます。実用的な観点から、これで十分です。

ただし、バッチファイルが値を上書きする可能性があるため、値が正しいことは保証されません。

WMICを使用して、コンピューター名を直接読み取ることができます。

for /f "skip=1 delims=" %%A in (
  'wmic computersystem get name'
) do for /f "delims=" %%B in ("%%A") do set "compName=%%A"

追加のFORループは、WMICのUnicode出力と相互作用するFOR / Fのアーティファクトである不要なキャリッジリターン文字を削除します。ループが1つしかない場合、各行の終わりに問題が発生する可能性がある復帰があります。


1
単に呼び出すのではなく、wmicを使用する理由はありhostnameますか?
eis

答えを書いた後、私はそのことを考えました。それは確かに簡単です。私はこれらの問題の専門家ではありませんが、serverfault.com / q / 260563/201695に基づくと、ホスト名とコンピューター名が同じであるとは限りません。しかし、通常の状況では同じであると思われます。
dbenham

26

Windowsでは、通常、環境変数はすでに設定されており、使用可能です-

echo %ComputerName%

1
これはどのバージョンのWindowsに適用されますか?(Windows 7で働いていました)
デビッドリチャービー

1
この変数は、少なくともWindows NTに至るまで存在します。
私は言うモニカの

おもしろいことに、PowerShellでは機能しません。cmd.exeのみ。奇妙なこと。
フランクトーマス

PowerShellは作品を以下の...環境変数のような特別なものを表現する独自の方法を持っています-Get-Item Env:\ComputerName
ビカス・グプタ

1
@VikasGupta使用できます$env:computername(大文字と小文字を区別しません)。
ボブ

0

PowerShellでは、次のものも使用できます。

[Environment]::MachineName

ここでは、値は.Netから取得されるため、の使用の問題を回避し$Env:ComputerNameます。


使用の問題は何$Env:ComputerNameですか?
シャドウ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.