Câu hỏi lệnh adb cho PowerShell (Windows)


Tôi mới dùng Windows. Tôi đã cài đặt các tệp adb và fastboot (nền tảng công cụ) cho Windows và đã thêm thư mục vào biến đường dẫn để tôi có thể truy cập adb trên toàn cầu.

Tôi đã làm một số nghiên cứu, và thấy rằng Windows đang dần chuyển sang PowerShell (tốt) và (tôi đoán) sẽ bỏ qua CMD cuối cùng. Vì vậy, ngay cả [Shift + Nhấp chuột phải] trình đơn hiển thị tùy chọn "Mở cửa sổ PowerShell tại đây". Tôi đã đọc một số bài báo và quen thuộc với hacks đăng ký để thêm "Open Command Prompt Here" và loại bỏ "Open PowerShell window here", nhưng đó không phải là điều tôi muốn làm, xem xét PowerShell cao hơn rất nhiều so với CMD.

Bây giờ, khi tôi mở PowerShell trong cùng một thư mục nơi tôi đã cài đặt các công cụ nền tảng và chạy lệnh adb, tôi nhận được điều này và nó thành công.

.\adb devices  
.\adb.exe devices  

Nhưng khi tôi mở PowerShell ở nơi khác và chạy lệnh, nó không thành công. Tại sao hành vi như vậy ngay cả khi tôi thêm thư mục adb vào biến đường dẫn? Và làm thế nào tôi có thể chạy lệnh thành công trên toàn cầu?

Trong quá trình tìm kiếm, tôi đã tìm thấy một ứng dụng cung cấp giao diện PowerShell ADB & Fastboot - PoshADB (chỉ muốn chia sẻ).

Xin lưu ý cái đó adb devices hoạt động tốt trong cmd, phổ biến.

- -

Một kết luận tôi rút ra từ câu trả lời dưới đây: 

  • Khi tệp adb KHÔNG ở trên của tôi PATH

    • Những công việc này trong cùng thư mục nơi adb được cài đặt:

      • Gọi bằng đường dẫn đầy đủ
        • .\adb devices 
        • .\adb.exe devices 
    • Điều này hoạt động phổ biến:

      • Gọi bằng đường dẫn đầy đủ
  • Khi tệp adb đang BẬT PATH

    • Những công việc này trong cùng thư mục nơi adb được cài đặt:

      • Gọi bằng đường dẫn đầy đủ
        • .\adb devices 
        • .\adb.exe devices 
      • adb devices
    • Các công trình này phổ biến:

      • adb devices 
      • Gọi bằng đường dẫn đầy đủ

Để tham khảo trong tương lai- (Nói ngắn gọn: Nếu nó không nằm trong PATH sau đó bạn phải nhập đường dẫn đầy đủ để nó hoạt động. Và nếu đó là của bạn PATH thì bạn có thể chỉ cần gõ adb devices, hoặc đề cập đến đường dẫn đầy đủ của adb)


1
2017-09-17 07:08


gốc


không sử dụng "chấm tìm nguồn cung ứng" chỉ "thiết bị adb.exe" nếu nó nằm trong đường dẫn của bạn hoặc sử dụng đường dẫn đầy đủ. "dot tìm nguồn cung ứng" được sử dụng trong thư mục hiện hành để ngăn chặn không mong muốn thực hiện PS bạn có thể hoặc có thể không cần phải sửa đổi bạn lệnh để cú pháp được chấp nhận bởi powershell - Jaqueline Vanek
PPS sử dụng "$ Env: Đường dẫn" để kiểm tra biến đường dẫn của bạn từ PowerShell - Jaqueline Vanek
Bổ sung OT nhỏ: [...] registry-hacks to add 'Open Command Prompt Here' and remove 'Open PowerShell Window here' không cần thiết. Chuyển đến bảng điều khiển Cài đặt mới -> Cá nhân hóa -> Thanh tác vụ -> bỏ chọn "Thay thế Dấu nhắc Lệnh bằng Windows PowerShell [...]". - flolilolilo
Như @Jaqueline đã đề cập, tôi có thể xác nhận adb.exe devices hoạt động tốt trong cùng thư mục với công cụ nền tảng. Nhưng vì tôi đã thêm thư mục đó vào biến đường dẫn (cũng có thể xác nhận nó bằng cách sử dụng $Env:Path), cùng một lệnh adb.exe devices  hoạt động phổ biến cũng. Điều này trả lời câu hỏi của tôi rất tốt. Cảm ơn bạn! Tuy nhiên, tôi không thể hiểu được " "dot sourcing" được sử dụng trong thư mục hiện tại để ngăn chặn việc thực thi không mong muốn"Vâng, tôi cũng có thể xác nhận rằng trong cùng một thư mục, .\adb.exe devices và .\adb devices hoạt động, nhưng không phổ biến. - swingcake
Ngoài ra @ tôi muốn sửa thông tin bạn đã cung cấp. Tùy chọn mà bạn đang đề cập đến Go to the new Settings panel -> Personalization -> Taskbar -> uncheck "Replace Command Prompt with Windows PowerShell [...]", nó chỉ thay thế chúng khi bạn nhấp chuột phải vào nút bắt đầu hoặc khi bạn nhấn phím Windows + X. Những gì tôi đang nói về bài viết gốc của tôi là trình đơn ngữ cảnh   Dù sao, cảm ơn cho bình luận! :) - swingcake


Các câu trả lời:


Khi bạn sử dụng .\ để chạy lệnh, bạn đang yêu cầu PowerShell xem chỉ có trong thư mục hiện tại cho nó - dấu chấm có nghĩa là "thư mục này", giống như trong bộ xử lý lệnh cũ. Nếu điều bạn đang cố gắng chạy không nằm trong thư mục hiện tại, ngay cả khi nó nằm trên PATH, điều đó sẽ thất bại. Lưu ý rằng thuật ngữ "dot-sourcing" đề cập đến việc thực thi các kịch bản PowerShell trong phạm vi hiện tại thay vì của chúng, điều này khác với việc chạy lệnh từ thư mục hiện tại.

Bạn có thể nhập tên chương trình mà không cần .\ bất cứ nơi nào để chạy nó nếu nó là của bạn PATH. Tuy nhiên, lưu ý rằng PowerShell sẽ không thấy thay đổi đối với PATH hoặc bất kỳ biến môi trường nào cho đến khi bạn khởi động lại nó. Sau khi bạn điều chỉnh biến môi trường và mở một PowerShell mới, đơn giản adb là đủ để xác định chương trình bạn muốn chạy, bất kể thư mục hiện tại của bạn là gì.


1
2017-09-17 19:42



"cho đến khi bạn khởi động lại nó" để có nó. bây giờ, làm thế nào để khởi động lại một phiên làm việc? - Jaqueline Vanek
@JaquelineVanek Đóng và mở lại cửa sổ PowerShell là đủ, nhưng một chu trình logoff / logon chắc chắn sẽ làm mới tất cả các biến môi trường. - Ben N
@BenN Hãy xem xét các tệp adb không có trên PATH. Bây giờ làm thế nào để tôi chạy / thi hành / đèn flash một tệp không có trong cùng một thư mục. Làm thế nào để tôi điều hướng vào tệp đó từ thư mục adb? - swingcake
@unixf Bạn có thể sử dụng cd để thay đổi thư mục hiện tại (giống như trong bộ xử lý lệnh cũ) hoặc bạn có thể nhập một người thân (ví dụ: subfolder\program.ext) hoặc đường dẫn đủ điều kiện (ví dụ: C:\somefolder\subfolder\program.ext) để chạy một chương trình nằm ở đâu đó khác với thư mục hiện tại. - Ben N