команда adb для PowerShell (Windows)

22262
swingcake

Я новичок в Windows. Я установил файлы adb и fastboot (platform-tools) для Windows и добавил папку в переменную path, чтобы я мог получить доступ к adb повсеместно.

Я провел некоторое исследование и обнаружил, что Windows постепенно переходит на PowerShell (что хорошо) и (я полагаю) в конечном итоге пропустит устаревшую CMD. Так что даже в меню [Shift + правый щелчок] отображается опция «Открыть окно PowerShell здесь». Я прочитал несколько статей и знаком со взломами реестра, чтобы добавить «Открыть командную строку здесь» и удалить «Открыть окно PowerShell здесь», но я бы не хотел этого делать, учитывая, что PowerShell намного более продвинутый, чем CMD.

Теперь, когда я открываю PowerShell в той же папке, где я установил инструменты платформы и запускаю команду adb, я получаю это, и это успешно .

.\adb devices  .\adb.exe devices  

Но когда я открываю PowerShell в другом месте и запускаю команду, это не удается . Почему так даже при добавлении папки adb в переменную path? И как я могу выполнить команду успешно универсально?

Во время поиска я нашел приложение, которое предоставляет PowerShell ADB и Fastboot GUI - PoshADB (просто хотел поделиться).

Обратите внимание, adb devicesчто прекрасно работает в cmd, универсально.

-

Вывод, который я сделал из ответа ниже:

  • Когда ADB файлы не на моем PATH

    • Они работают в той же папке, где установлен adb:

      • Звоните по полному пути
        • .\adb devices
        • .\adb.exe devices
    • Это работает универсально:

      • Звоните по полному пути
  • Когда ADB файлы включены, мой PATH

    • Они работают в той же папке, где установлен adb:

      • Звоните по полному пути
        • .\adb devices
        • .\adb.exe devices
      • adb devices
    • Это работает повсеместно:

      • adb devices
      • Звоните по полному пути

Для справки в будущем - (кратко: если он не на вашем, PATHвам нужно ввести полный путь, чтобы он работал. А если он на вашем, PATHто вы можете просто напечатать adb devicesили указать полный путь adb)

1
не используйте "точечный источник", просто "устройства adb.exe", если он находится на вашем пути, или используйте полные пути. «Точечный источник» используется в текущем каталоге для предотвращения нежелательного выполнения. PS Вам может понадобиться или не потребоваться изменить свою команду так, чтобы синтаксис был приемлем для powershell. Jaqueline Vanek 6 лет назад 2
PPS использует "$ Env: Path", чтобы проверить переменную пути из powershell Jaqueline Vanek 6 лет назад 1
Небольшое OT-дополнение: `[...] исправления реестра, чтобы добавить 'Open Command Prompt Here' и удалить 'Open PowerShell Window here' ', не нужны. Перейдите на новую панель «Настройки» -> «Персонализация» -> «Панель задач» -> снимите флажок «Заменить командную строку Windows PowerShell [...]». flolilolilo 6 лет назад 0
Как упомянул @Jaqueline, я могу подтвердить, что устройства adb.exe работают нормально в той же папке, где находятся инструменты платформы. Но так как я добавил эту папку в переменную пути (также могу подтвердить это с помощью `$ Env: Path`), та же команда` adb.exe devices` [работает универсально] (https://imgur.com/3UAKveY) также. Это очень хорошо отвечает на мой вопрос. Спасибо! Однако я не могу понять, что "_" точечный источник "используется в текущем каталоге ** для предотвращения нежелательного выполнения ** _". Да, я также могу подтвердить, что в той же папке, `. \ Adb.exe devices` и`. \ Adb devices` работает, но не всегда. swingcake 6 лет назад 0
Также @flo Я хотел бы исправить предоставленную вами информацию. Эта опция, на которую вы ссылаетесь, «Перейдите на новую панель« Настройки »->« Персонализация »->« Панель задач »-> снимите флажок« Заменить командную строку Windows PowerShell [...] »`), она заменяет только их [_при щелчке правой кнопкой мыши по пуску или когда вы нажимаете клавишу Windows + X_] (https://imgur.com/Pb8ZsfK). В моем первоначальном посте я говорю о [контекстном меню] (https://imgur.com/IXtrau6). В любом случае, спасибо за комментарий! :) swingcake 6 лет назад 0
@Gawd на самом деле "точечный источник" это другое дело, мой плохой. Я имел в виду, что Powershell не будет запускать исполняемые файлы без * явного * пути, в случае текущего местоположения это означает добавление «.» дополнительная информация: "get-help about_Command_Precedence -full" Jaqueline Vanek 6 лет назад 0

1 ответ на вопрос

1
Ben N

Когда вы используете .\команду для запуска, вы указываете PowerShell искать ее только в текущем каталоге - точка означает «эту папку», как в старом командном процессоре. Если то, что вы пытаетесь запустить, отсутствует в текущей папке, даже если оно находится в папке, это PATHне удастся. Обратите внимание, что термин «точечный источник» относится к выполнению сценариев PowerShell в текущей области вместо их собственных, что отличается от выполнения команды из текущего каталога.

Вы можете ввести имя программы, .\чтобы она нигде не запускалась, если она есть у вас PATH. Обратите внимание, что PowerShell не увидит изменений PATHили каких-либо переменных среды, пока вы не перезапустите его. После того, как вы настроили переменную среды и открыли новую оболочку PowerShell, adbдостаточно просто определить программу, которую вы хотите запустить, независимо от вашего текущего каталога.

«пока не перезапустишь», так и понял. Теперь, как перезапустить шикарный сеанс? Jaqueline Vanek 6 лет назад 0
@JaquelineVanek Закрытие и повторное открытие окна PowerShell должно быть достаточным, но цикл выхода из системы / входа в систему определенно обновит все переменные среды. Ben N 6 лет назад 0
@BenN Учтите, что файлы adb отсутствуют в моем `PATH`. Теперь, как мне запустить / выполнить / _flash_ файл, которого нет в той же папке. Как мне _навигаться_ к этому файлу из папки adb? swingcake 6 лет назад 0
@unixf Вы можете использовать `cd`, чтобы изменить текущий каталог (во многом как в старом командном процессоре), или вы можете ввести относительный (например,` subfolder \ program.ext`) или полный путь (например, `C: \ somefolder) \ subfolder \ program.ext`) для запуска программы, которая находится где-то еще, кроме текущего каталога. Ben N 6 лет назад 0