배치 스크립트에서 PC 이름을 찾는 방법은 무엇입니까?


18

배치 프로그램을 실행하는 PC 이름을 어떻게 찾을 수 있습니까?

배치 프로그램을 실행하는 PC 이름을 찾아 변수로 저장할 수 있습니다. 어떤 도움?


4
를 사용하여 cmd 또는 powershell 명령 행에서 시스템의 호스트 이름을 검색 할 수 있습니다 hostname. var로 저장할 필요가 없으며 필요에 따라 인라인으로 호출하면됩니다.
Frank Thomas

@ FrankThomas-왜 이것을 짧은 대답으로 제공하지 않습니까?
Nifle

2
hostnameexe이며 콘솔에서 컴퓨터 이름을 출력하는 동안 배치 파일로 캡처하는 것은 쉽지 않습니다. 운 좋게도 이미 환경 변수 세트가 있으며 ComputerName일반적인 Windows 시스템에서 사용할 수 있습니다 ( ).
Vikas Gupta

답변:


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 루프는 FOR / F가 WMIC의 유니 코드 출력과 상호 작용하는 아티팩트 인 원하지 않는 캐리지 리턴 문자를 제거합니다. 루프가 하나만 있으면 각 줄 끝에 캐리지 리턴이있어 문제가 발생할 수 있습니다.


1
그냥 전화하는 대신 wmic를 사용하는 이유가 hostname있습니까?
EIS

나는 대답을 쓴 후에 그것을 생각했다. 확실히 더 간단 할 것입니다. 나는이 문제에 대해 전문가는 아니지만 serverfault.com/q/260563/201695 기반으로 호스트 이름과 컴퓨터 이름이 동일하지는 않다고 생각합니다. 그러나 나는 그들이 정상적인 상황에서 동일해야한다고 생각합니다.
dbenham

26

Windows에서는 일반적으로 환경 변수가 이미 설정되어 있으며 사용할 수 있습니다.

echo %ComputerName%

1
어떤 버전의 Windows에 적용됩니까? (Windows 7에서 나를 위해 일했습니다.)
David Richerby

1
이 변수는 최소한 Windows NT로 돌아갑니다.
나는 말한다 Reinstate Monica

흥미롭게도 powershell에서는 작동하지 않습니다. cmd.exe에서만. 이상하다.
Frank Thomas

PowerShell은 작품을 ... 환경 변수와 같은 특수 상황을 나타내는 다음의 자신의 방법이 -Get-Item Env:\ComputerName
비 카스 굽타에게

1
@VikasGupta 당신은 그냥 사용할 수 있습니다 $env:computername(대소 문자 구분).

0

PowerShell에서는 다음을 사용할 수도 있습니다.

[Environment]::MachineName

여기서 값은 .Net에서 가져 오므로 사용 문제를 피합니다 $Env:ComputerName.


사용의 문제는 무엇입니까 $Env:ComputerName?
Shadow
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.