Bagaimana menemukan nama PC dalam skrip batch?


18

Bagaimana saya menemukan nama PC yang menjalankan program batch saya di atasnya?

Saya ingin mencari nama PC yang menjalankan program batch saya dan dapat menyimpannya sebagai variabel. Ada bantuan?


4
Anda dapat mengambil hostname sistem dari baris perintah cmd atau PowerShell hostname. Anda tidak perlu menyimpannya sebagai var, cukup panggil inline sesuai kebutuhan.
Frank Thomas

@FrankThomas - Mengapa Anda tidak memberikan ini sebagai (mungkin dengan contoh singkat) sebagai gantinya?
Nifle

2
hostnameadalah exe, dan saat mengeluarkan nama mesin pada konsol, itu akan menjadi non-sepele untuk menangkapnya dalam file batch. Untungnya, sudah ada set variabel lingkungan, dan tersedia ( ComputerName) untuk digunakan pada sistem windows biasa.
Vikas Gupta

Jawaban:


10

Seperti yang dijawab Vikas Gupta, Anda dapat menggunakan %COMPUTERNAME%variabel lingkungan yang telah ditentukan sebelumnya yang sudah berisi nama komputer. Dari sudut pandang praktis, inilah yang Anda butuhkan.

Namun, dimungkinkan untuk file batch untuk menulis nilai secara berlebihan, sehingga tidak dijamin bahwa nilainya benar.

Anda dapat menggunakan WMIC untuk secara langsung membaca nama komputer.

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

Loop FOR ekstra menghilangkan karakter carriage return yang tidak diinginkan yang merupakan artefak dari FOR / F yang berinteraksi dengan output Unicode dari WMIC. Dengan hanya satu loop ada carriage return di akhir setiap baris yang dapat menyebabkan masalah.


1
apakah ada alasan untuk menggunakan wmic bukan hanya menelepon hostname?
eis

Saya memikirkan itu setelah saya menulis jawabannya. Tentunya akan lebih sederhana. Saya bukan ahli dalam masalah ini, tetapi berdasarkan serverfault.com/q/260563/201695 , saya pikir nama host dan nama komputer tidak dijamin sama. Tapi saya pikir mereka seharusnya sama dalam keadaan normal.
dbenham

26

Di Windows, biasanya variabel lingkungan sudah diatur dan tersedia untuk Anda gunakan -

echo %ComputerName%

1
Versi Windows apa yang berlaku untuk ini? (Bekerja untuk saya di Windows 7.)
David Richerby

1
Variabel ini hadir setidaknya sepanjang jalan kembali ke Windows NT.
Saya katakan Reinstate Monica

cukup menarik, itu tidak akan bekerja di PowerShell; hanya di cmd.exe. aneh itu.
Frank Thomas

Powershell memiliki caranya sendiri untuk mewakili hal-hal khusus seperti Variabel Lingkungan ... berikut karya -Get-Item Env:\ComputerName
Vikas Gupta

1
@VikasGupta Anda hanya bisa menggunakan $env:computername(case-insensitive juga).
Bob

0

Di PowerShell Anda juga dapat menggunakan:

[Environment]::MachineName

Di sini nilainya berasal dari .Net sehingga menghindari masalah penggunaan $Env:ComputerName.


Apa masalah menggunakan $Env:ComputerName?
Bayangan
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.