Windows Терминал не меняет каталог через скрипт - PullRequest
0 голосов
/ 26 мая 2020

У меня есть файл assist.cmd, который находится в пределах моего% path% с содержимым

pushd m:\Documents\Code\assist

Когда я набираю команду «Assist» на терминале windows (новый), я получаю:

PS C:\Users\User> assist

C:\Users\User>pushd m:\Documents\Code\assist
PS C:\Users\User>

Когда я сам копирую команду pushd, она работает, но не при использовании из сценария.

Есть идеи?

Ответы [ 2 ]

2 голосов
/ 26 мая 2020

Когда вы запускаете BAT-сценарий "assist.cmd", запускается новый дочерний процесс "cmd.exe". Командный процессор выполняет сценарий BAT, и текущий рабочий каталог этого процесса фактически изменяется. После этого процесс завершается после завершения сценария BAT.

Текущий рабочий каталог дочернего процесса не изменяет рабочий каталог процесса PowerShell. Вот почему сценарий .cmd не может использоваться для выполнения намеченной помощи.

Вы можете использовать сценарий PowerShell «assist.ps1», содержащий Push-Location или его псевдоним pushd, и вызывать его с синтаксисом dot sourcing

. assist.ps1
1 голос
/ 26 мая 2020

Кроме того, при запуске файла .cmd вы запускаете команду pushd, которая поставляется с cmd, а не команду pushd powershell. https://blog.brainasoft.com/all-internal-commands-of-cmd/

...