Come posso impostare la directory di lavoro di un eseguibile tramite la riga di comando, prima di eseguirlo?


35

Se eseguo un programma dalla riga di comando la cui posizione viene risolta tramite la variabile d'ambiente Path , la directory di lavoro del programma viene generalmente impostata sulla directory di installazione.

Vorrei eseguire un programma del genere da una finestra della console e impostare la sua directory di lavoro sulla directory corrente o su un'altra esplicita. Sono stato in grado di farlo copiando temporaneamente il programma nella mia directory di lavoro - c'è un altro modo per farlo all'interno degli ambienti cmd.exe o powershell.exe?

L'analogia della shell di Windows con questa attività consiste nel creare un collegamento e impostare la proprietà "Avvia in" di conseguenza.

Risposte:


40

Per impostare esplicitamente la directory di lavoro, una soluzione PowerShell sarebbe utilizzare il Start-Processcmdlet con il -WorkingDirectoryparametro

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

Utilizzando l'alias start, il parametro posizionale e il nome parziale del parametro, questo può essere scritto come:

start notepad.exe -wo c:\temp

CMD ha anche un STARTcomando. Per questo, utilizzare il /Dparametro per specificare la directory di lavoro:

START /D c:\temp notepad.exe

6

Di seguito funzionerà, effettuerà le sostituzioni appropriate e lo salverà con .cmdun'estensione.

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

Metti questo file batch in una directory nella tua %PATH%e dovresti essere in grado di invocarlo da qualsiasi cmd.exeistanza.


1
Si noti che la funkiness può verificarsi se la directory di lavoro e l'eseguibile non si trovano sulla stessa partizione / unità.
MBraedley

2
@LawrenceC, tuttavia questa soluzione richiede un file temporaneo. È meglio se ciò non fosse possibile utilizzando file temporanei
Pacerier,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.