จะค้นหาชื่อพีซีในชุดสคริปต์ได้อย่างไร


18

ฉันจะหาชื่อของพีซีที่ใช้งานโปรแกรมแบตช์ของฉันได้อย่างไร

ฉันต้องการค้นหาชื่อของพีซีที่ใช้งานโปรแกรมแบตช์ของฉันและสามารถเก็บไว้เป็นตัวแปรได้ ความช่วยเหลือใด ๆ


4
คุณสามารถเรียกชื่อโฮสต์ของระบบจากบรรทัดคำสั่งหรือ PowerShell hostnameคำสั่งด้วย คุณไม่จำเป็นต้องเก็บมันไว้ในรูปแบบเพียงเรียกใช้แบบอินไลน์ตามที่คุณต้องการ
Frank Thomas

@FrankThomas - ทำไมคุณไม่ให้คำตอบนี้แทน (บางทีอาจเป็นตัวอย่างสั้น ๆ )?
Nifle

2
hostnameเป็น exe และในขณะที่มันส่งออกชื่อเครื่องบนคอนโซลมันจะไม่สำคัญที่จะจับมันในไฟล์แบทช์ โชคดีที่มีชุดตัวแปรสภาพแวดล้อมอยู่และพร้อมใช้งาน ( 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 / F การโต้ตอบกับเอาต์พุต Unicode ของ 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
Vikas Gupta

1
@VikasGupta คุณสามารถใช้$env:computername(ตัวพิมพ์เล็กและตัวพิมพ์ใหญ่)
บ๊อบ

0

ใน PowerShell คุณสามารถใช้:

[Environment]::MachineName

$Env:ComputerNameที่นี่คุ้มค่าที่มาจากสุทธิดังนั้นจึงหลีกเลี่ยงปัญหาของการใช้


ปัญหาของการใช้$Env:ComputerNameคืออะไร?
เงา
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.