Comment définir le répertoire de travail d'un exécutable via la ligne de commande, avant de l'exécuter?

35

Si j'exécute un programme sur la ligne de commande dont l'emplacement est résolu via la variable d'environnement Path , le répertoire de travail du programme est généralement défini sur son répertoire d'installation.

Je voudrais exécuter un tel programme à partir d'une fenêtre de console et définir son répertoire de travail sur le répertoire actuel ou un autre répertoire explicite. J'ai pu le faire en copiant temporairement le programme dans mon répertoire de travail - existe-t-il une autre façon de le faire dans les environnements cmd.exe ou powershell.exe?

L'analogie du shell Windows avec cette tâche consiste à créer un raccourci et à définir la propriété "Démarrer dans" en conséquence.

Steve Guidi
la source

Réponses:

40

Pour définir explicitement le répertoire de travail, une solution PowerShell consisterait à utiliser l' Start-Processapplet de commande avec le -WorkingDirectoryparamètre.

Start-Process -FilePath notepad.exe -WorkingDirectory c:\temp

En utilisant l'alias start, le paramètre positionnel et le nom du paramètre partiel, cela pourrait s'écrire:

start notepad.exe -wo c:\temp

CMD a également une STARTcommande. Pour cela, utilisez le /Dparamètre pour spécifier le répertoire de travail:

START /D c:\temp notepad.exe
Rynant
la source
6

Ce qui suit fonctionnera, effectuera les substitutions appropriées et l'enregistrera avec une .cmdextension.

@echo off 
C:
chdir C:\desired\directory
C:\full\path\of\command.exe

Placez ce fichier batch dans un répertoire de votre %PATH%et vous devriez pouvoir l'invoquer à partir de n'importe quelle cmd.exeinstance.

LawrenceC
la source
1
Notez que le funkiness peut se produire si le répertoire de travail et l'exécutable ne sont pas sur la même partition / lecteur.
MBraedley
2
@LawrenceC, Cependant, cette solution nécessite un fichier temporaire. Il est préférable que cela soit possible sans aucun fichier temporaire
Pacerier