USB tham chiếu không có ký tự ổ đĩa


0

Khách hàng của tôi có một chương trình được đặt trên ổ đĩa flash. Tôi muốn gửi một bản cập nhật (MSI hoặc EXE) để xóa một tệp trên ổ đĩa và thay thế nó bằng một tệp khác.

Trên Mac, điều này thật dễ dàng vì tất cả các ổ đĩa ngoài được tham chiếu theo tên và được lưu trong cùng một thư mục (ví dụ: Khối / MyDrive), nhưng Windows sử dụng ký tự ổ đĩa (F: \ E: \) có thể thay đổi nếu máy khách có bất kỳ cài đặt nào khác hoặc thậm chí chỉ là một ổ đĩa khác cắm vào.

Làm cách nào tôi có thể tham chiếu ổ đĩa flash đích mà không phải sử dụng ký tự ổ đĩa (có thể không chính xác)?


Yêu cầu người dùng nhập ký tự ổ đĩa để thực hiện cập nhật. Hoặc cung cấp một tệp bó mà họ có thể sao chép vào ổ đĩa flash để khởi động nâng cấp, vì tệp bó có thể báo cáo ổ đĩa đang chạy.
Ƭᴇcʜιᴇ007

Tôi không muốn làm cho người dùng thực hiện bất kỳ công việc nào (nếu có thể, đó là) vì hầu hết trong số họ không am hiểu về máy tính.
corpico

1
Hãy thử wmic LogicalDisk where "DriveType=2 or DriveType=3" get DeviceID, DriveType, VolumeName, VolumeSerialNumbernếu bạn có thể xác định ổ đĩa flash của mình ở đầu ra (hoặc đầu ra từ wmic LogicalDisk get /value) thì bạn có thể phân tích cú pháp bằng for /Fvòng lặp để lấy ký tự ổ đĩa.
JosefZ

Giải pháp tuyệt vời! Cảm ơn bạn rất nhiều @JosefZ!
corpico

Không có gì. Hãy đưa ra câu trả lời của riêng bạn và sau đó xem xét đánh dấu nó là chấp nhận. Xem trang này để được giải thích tại sao điều này lại quan trọng.
JosefZ

Câu trả lời:


0

Xem bình luận của JosefZ để biết giải pháp một dòng tuyệt vời để lấy tên ổ đĩa trong Windows.

Cuối cùng tôi đã sử dụng Java. Đây là mã có liên quan để tham khảo trong tương lai:

FileSystemView fsv = FileSystemView.getFileSystemView();
File[] f = File.listRoots();
for(File file : f)
    System.out.println(fsv.getSystemDisplayName(file));
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.