0

J'ai un script batch sur mon ordinateur appelé cs.bat. Lorsque j'entre cs dans l'invite de commande, pushd m'emmène dans un certain répertoire et me laisse là. Dans PowerShell, la commande fait la même chose mais me ramène dans le répertoire de départ.pushd dans Windows Power Shell et Invite de commandes

Pourquoi est-ce le cas? Comment puis-je faire en sorte que je reste dans le répertoire après avoir tapé 'cs' dans power shell?

Windows PowerhShell versus Windows command prompt and batch file edited in Notepad

Répondre

4

Cela se produit parce que votre « cs.bat » fonctionne dans un processus différent (en cours d'exécution cmd.exe) donné naissance par PowerShell (alors que les fichiers batch exécutent dans la même instance lorsqu'il est exécuté à partir cmd). Le répertoire courant est un concept par processus, donc le changer dans un processus n'a aucun effet sur un autre.

Probablement la manière la plus simple de contourner le problème est d'écrire un script (ou une fonction) "cs.ps1" qui s'exécuterait dans le processus PowerShell.

0

Powershell inclut des alias pour Pushd et Popd.

Get-Alias Pushd : pushd -> Push-Location 
Get-Alias Popd : popd -> Pop-Location 

Vous pouvez ensuite utiliser Get-Help Push-Location -Full -Online pour obtenir la dernière aide pour cette applet de commande.

Ensuite, créez simplement un script et testez ce comportement.

#Sample.ps1 script 

#Get current DIR 
dir 

#push location to some location and DIR there. 
Push-Location C:\Scripts\ 
dir 

#at this point, your console will still be in the Push-Location directory 
#simply run the Pop-Location cmdlet to switch back.