Toplu komut dosyasında bilgisayarların adı nasıl bulunur?


18

Toplu iş programımı çalıştıran bilgisayarın adını nasıl bulabilirim?

Toplu iş programımı çalıştıran bir bilgisayarın adını bulmak ve bir değişken olarak saklamak istiyorum. Herhangi bir yardım?


4
cmd veya powershell komut satırından bir sistemin ana bilgisayar adını alabilirsiniz hostname. bir var olarak saklamanız gerekmemelidir, ihtiyacınız olduğu gibi satır içi olarak çağırmanız yeterlidir.
Frank Thomas

@FrankThomas - Bunun yerine neden (belki kısa bir örnekle) bir cevap vermiyorsunuz?
Nifle

2
hostnamebir exe'dir ve makine adını konsolda çıkarırken bir toplu iş dosyasında yakalamak önemsiz olacaktır. Neyse ki, zaten bir ortam değişkeni kümesi vardır ve ComputerNametipik windows sisteminde kullanmak için kullanılabilir ( ).
Vikas Gupta

Yanıtlar:


10

Vikas Gupta'nın yanıtladığı gibi, önceden %COMPUTERNAME%bilgisayar adını içeren önceden tanımlanmış ortam değişkenini kullanabilirsiniz . Pratik bir bakış açısından, ihtiyacınız olan her şey bu olmalıdır.

Ancak, bir toplu iş dosyasının değerin üzerine yazılması mümkündür, bu nedenle değerin doğru olması garanti edilmez.

Bilgisayar adını doğrudan okumak için WMIC'yi kullanabilirsiniz.

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

Ekstra FOR döngüsü, WMIC'nin Unicode çıktısıyla etkileşime giren FOR / F'nin bir artefaktı olan istenmeyen satırbaşı karakterlerini ortadan kaldırır. Sadece bir döngü ile, her hattın sonunda sorunlara neden olabilecek bir satır başı vardır.


1
sadece aramak yerine wmic kullanmanın bir nedeni var hostnamemı?
eis

Cevabı yazdıktan sonra bunu düşündüm. Kesinlikle daha basit olurdu. Bu konularda uzman değilim, ancak serverfault.com/q/260563/201695'e dayanarak, ana bilgisayar adı ve bilgisayar adının aynı olduğu garanti edilmediğini düşünüyorum. Ama bence normal şartlar altında aynı olmaları gerekiyor.
dbenham

26

Windows'da, genellikle bir ortam değişkeni önceden ayarlanmıştır ve kullanmanız için kullanılabilir -

echo %ComputerName%

1
Bu hangi Windows sürümleri için geçerlidir? (Windows 7'de benim için çalıştı.)
David Richerby

1
Bu değişken en azından Windows NT'ye kadar mevcuttur.
Reinstate Monica diyorum

ilginç bir şekilde, bir powershell'de çalışmayacak; sadece cmd.exe içinde. garip.
Frank Thomas

Powershell, Çevre Değişkenleri gibi özel şeyleri temsil etmek için kendi yoluna sahiptir ... çalışmaları takip ediyor -Get-Item Env:\ComputerName
Vikas Gupta

1
@VikasGupta Sadece kullanabilirsiniz $env:computername(büyük / küçük harf duyarsız).
Bob

0

PowerShell'de şunları da kullanabilirsiniz:

[Environment]::MachineName

Burada değer .Net'ten gelir, böylece kullanım sorununu önler $Env:ComputerName.


Kullanma sorunu nedir $Env:ComputerName?
Gölge
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.