Come trovare il nome del PC in uno script batch?


18

Come troverei il nome del PC su cui è in esecuzione il mio programma batch?

Vorrei trovare il nome di un PC che esegue il mio programma batch ed essere in grado di memorizzarlo come variabile. Qualsiasi aiuto?


4
è possibile recuperare il nome host di un sistema dalla riga di comando cmd o powershell con hostname. non dovresti aver bisogno di memorizzarlo come var, semplicemente invocalo in linea quando ne hai bisogno.
Frank Thomas,

@FrankThomas - Perché non fornisci questa risposta come (forse con un breve esempio)?
Nifle,

2
hostnameè un exe e mentre genera il nome della macchina sulla console, non sarà banale catturarlo in un file batch. Fortunatamente, esiste già un set di variabili di ambiente e disponibile ( ComputerName) da utilizzare sul tipico sistema Windows.
Vikas Gupta,

Risposte:


10

Come ha risposto Vikas Gupta, è possibile utilizzare la %COMPUTERNAME%variabile di ambiente predefinita che contiene già il nome del computer. Da un punto di vista pratico, questo dovrebbe essere tutto ciò di cui hai bisogno.

Tuttavia, è possibile che un file batch sovrascriva il valore, quindi non è garantito che il valore sia corretto.

È possibile utilizzare WMIC per leggere direttamente il nome del computer.

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

Il ciclo FOR aggiuntivo elimina i caratteri di ritorno a capo indesiderati che sono un artefatto di FOR / F che interagisce con l'output Unicode di WMIC. Con un solo loop c'è un ritorno a capo alla fine di ogni riga che può causare problemi.


1
c'è un motivo per usare wmic invece di chiamare semplicemente hostname?
eis,

Ci ho pensato dopo aver scritto la risposta. Sarebbe sicuramente più semplice. Non sono un esperto di questi problemi, ma sulla base di serverfault.com/q/260563/201695 , penso che il nome host e il nome del computer non siano garantiti uguali. Ma penso che dovrebbero essere uguali in circostanze normali.
dbenham,

26

Su Windows, in genere una variabile di ambiente è già impostata e disponibile per l'uso:

echo %ComputerName%

1
A quali versioni di Windows si applica questo? (Ha funzionato per me in Windows 7.)
David Richerby,

1
Questa variabile è presente almeno fino a Windows NT.
Dico Reinstate Monica il

abbastanza interessante, tuttavia, non funzionerà in una PowerShell; solo in cmd.exe. strano.
Frank Thomas,

Powershell ha il suo modo di rappresentare cose speciali come Variabili d'ambiente ... seguenti lavori -Get-Item Env:\ComputerName
Vikas Gupta,

1
@VikasGupta Potresti semplicemente usare $env:computername(anche senza distinzione tra maiuscole e minuscole).
Bob,

0

In PowerShell puoi anche usare:

[Environment]::MachineName

Qui il valore deriva da .Net, quindi evita il problema dell'utilizzo $Env:ComputerName.


Qual è il problema dell'utilizzo $Env:ComputerName?
Shadow
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.