Làm thế nào để tìm tên PC trong một tập lệnh bó?


18

Làm thế nào tôi có thể tìm thấy tên của PC chạy chương trình hàng loạt của tôi trên đó?

Tôi muốn tìm tên của một PC đang chạy chương trình hàng loạt của tôi và có thể lưu trữ nó dưới dạng một biến. Có ai giúp đỡ không?


4
bạn có thể truy xuất tên máy chủ của một hệ thống từ dòng lệnh cmd hoặc powershell với hostname. bạn không cần lưu trữ nó dưới dạng var, chỉ cần gọi nó là nội tuyến khi bạn cần.
Frank Thomas

@FrankThomas - Tại sao bạn không cung cấp câu trả lời này (có lẽ với một ví dụ ngắn) thay vào đó?
Nifle

2
hostnamelà một exe và trong khi nó xuất ra tên máy trên bàn điều khiển, nó sẽ không tầm thường để chụp nó trong một tệp bó. May mắn thay, đã có một bộ biến môi trường và có sẵn ( ComputerName) để sử dụng trên hệ thống cửa sổ thông thường.
Vikas Gupta

Câu trả lời:


10

Như Vikas Gupta đã trả lời, bạn có thể sử dụng định nghĩa trước %COMPUTERNAME% biến môi trường trước đã chứa tên máy tính. Từ quan điểm thực tế, đây sẽ là tất cả những gì bạn cần.

Tuy nhiên, một tệp bó có thể ghi đè lên giá trị, do đó không đảm bảo rằng giá trị này là chính xác.

Bạn có thể sử dụng WMIC để đọc trực tiếp tên máy tính.

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

Vòng lặp FOR bổ sung giúp loại bỏ các ký tự trả về vận chuyển không mong muốn là một thành phần của FOR / F tương tác với đầu ra Unicode của WMIC. Chỉ với một vòng lặp, có một sự trở lại vận chuyển ở cuối mỗi dòng có thể gây ra vấn đề.


1
Có một lý do để sử dụng wmic thay vì chỉ gọi hostname?
eis

Tôi nghĩ về điều đó sau khi tôi viết câu trả lời. Nó chắc chắn sẽ đơn giản hơn. Tôi không phải là chuyên gia về các vấn đề này, nhưng dựa trên serverfault.com/q/260563/201695 , tôi nghĩ tên máy chủ và tên máy tính không được đảm bảo giống nhau. Nhưng tôi nghĩ họ được cho là giống nhau trong những trường hợp bình thường.
dbenham

26

Trên Windows, thông thường một biến môi trường đã được đặt và có sẵn để bạn sử dụng -

echo %ComputerName%

1
Những phiên bản Windows này áp dụng cho? (Làm việc cho tôi trong Windows 7.)
David Richerby

1
Biến này có mặt ít nhất là tất cả các cách trở lại Windows NT.
Tôi nói Phục hồi lại

đủ thú vị, mặc dù vậy, nó sẽ không hoạt động trong một thế lực; chỉ trong cmd.exe. lẻ mà.
Frank Thomas

Powershell có cách riêng để đại diện cho những điều đặc biệt như Biến môi trường ... các tác phẩm sau -Get-Item Env:\ComputerName
Vikas Gupta

1
@VikasGupta Bạn chỉ có thể sử dụng $env:computername(không phân biệt chữ hoa chữ thường).
Bob

0

Trong PowerShell, bạn cũng có thể sử dụng:

[Environment]::MachineName

Ở đây giá trị đến từ .Net vì vậy nó tránh được vấn đề sử dụng $Env:ComputerName.


Vấn đề của việc sử dụng là $Env:ComputerNamegì?
Bóng tối
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.