Soru Bir .bat dosyasındaki değişkende hostname nasıl saklanır?


Bunu dönüştürmek istiyorum /bin/sh yaygın olarak uyumlu bir Windows toplu iş komut dosyası içine sözdizimi:

host=`hostname`
echo ${host}

Windows Vista, Windows XP ve Windows 2000 makinelerinde çalışacak şekilde nasıl yapılır?

Açıklığa kavuşturmak için: Programa devam etmeyi ve değişkende saklandığı gibi ana bilgisayar adını kullanmayı isterim. host. Başka bir deyişle, programın daha büyük hedefi, ana makine adını basitçe yansıtmamaktır.


44
2018-06-15 21:00


Menşei




Cevaplar:


Genellikle komut çıktısını kullanarak değişkenleri okurum. FOR geçici dosyaları oluşturmak zorunda kaldığından komut olarak. Örneğin:

FOR /F "usebackq" %i IN (`hostname`) DO SET MYVAR=%i

Not, yukarıdaki ifade, komut satırında çalışacak, ancak bir toplu iş dosyasında çalışacaktır. Toplu iş dosyasında kullanmak için % içinde FOR iki kez koyarak ifade:

FOR /F "usebackq" %%i IN (`hostname`) DO SET MYVAR=%%i
ECHO %MYVAR%

İle yapabileceğiniz çok daha fazla şey var FOR. Daha fazla bilgi için sadece yazın HELP FOR komut isteminde.


49
2018-06-15 21:53



çok güzel olsa da, döngü yapısı için aşırı yüklenme IMO'dur. Bunu kullanmak için geçiş yapacak. Teşekkürler! - Edward Q. Bridges
Haklısınız - FOR, temel olarak, toplu komut dosyalarının İsviçre-ordu bıçağıdır, çünkü çoğu problemi çözmek için kullanmış olursunuz. - Dave Webb
Ödevi tekrarlamak isterseniz (Bu örnekte, sadece bir defada ana bilgisayar adını sorgulayacağınız gibi bir anlam ifade etmiyorsa) kullanmayı unutmayın. SETLOCAL ENABLEDELAYEDEXPANSION (görmek HELP SETLOCAL) ve kullan !MYVAR! yerine %MYVAR% - PA.
'Hostname' komutu,% COMPUTERNAME% ortam değişkeninde zaten kayıtlı olanla aynı şeyi döndürür. - Dylan Beattie
İle ilgili sorun %COMPUTERNAME% büyük harfli ve hostname Ana bilgisayar adının orijinal durumunu döndürür. Bu önemliyse, o zaman hostname yaklaşım gerekli. - Adam Lindberg


hmm - böyle bir şey?

set host=%COMPUTERNAME%
echo %host%

DÜZENLE: jitter'in cevabını genişletmek ve bir cevapta bir teknik kullanmak bu soru Bir komut satırı uygulamasını çalıştırmanın sonucu olarak bir ortam değişkeni ayarlamak için:

@echo off
hostname.exe > __t.tmp
set /p host=<__t.tmp
del __t.tmp
echo %host%

Her iki durumda da, 'host' bir ortam değişkeni olarak yaratılır.


51
2018-06-15 21:07



Bu çalışır - teşekkürler - Edward Q. Bridges


Ortam değişkenini kullanıyorum COMPUTERNAME:

copy "C:\Program Files\Windows Resource Kits\Tools\" %SYSTEMROOT%\system32
srvcheck \\%COMPUTERNAME% > c:\shares.txt
echo %COMPUTERNAME%

10
2017-09-20 18:33





Neden olmasın

set host=%COMPUTERNAME%
echo %host%

5
2018-02-17 11:44





Sadece çizgi ile bir .bat dosyası oluşturun

hostname

içinde. Bu kadar. Windows ayrıca hostname komutunu da destekler.


1
2018-06-15 21:07



Üzgünüm, daha açık olmalıydım. Değişkende saklanan değeri kullanmak ister, sadece yankılamaz. - Edward Q. Bridges