Jak ustawić katalog roboczy pliku wykonywalnego za pomocą wiersza poleceń przed jego uruchomieniem?

35

Jeśli uruchomię program w wierszu polecenia, którego położenie jest rozwiązywane przez zmienną środowiskową Path , katalog roboczy programu jest zazwyczaj ustawiony na katalog instalacyjny.

Chciałbym uruchomić taki program z okna konsoli i ustawić jego katalog roboczy na bieżący lub inny jawny. Byłem w stanie to zrobić, tymczasowo kopiując program do mojego katalogu roboczego - czy istnieje inny sposób na osiągnięcie tego w środowisku cmd.exe lub powershell.exe?

Analogią powłoki systemu Windows do tego zadania jest utworzenie skrótu i ​​odpowiednie ustawienie właściwości „Rozpocznij w”.

Steve Guidi
źródło

Odpowiedzi:

40

Aby jawnie ustawić katalog roboczy, rozwiązaniem PowerShell byłoby użycie polecenia Start-Processcmdlet z -WorkingDirectoryparametrem.

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

Używając aliasu start, parametru pozycyjnego i częściowej nazwy parametru można to zapisać jako:

start notepad.exe -wo c:\temp

CMD ma również STARTpolecenie. W tym celu użyj /Dparametru, aby określić katalog roboczy:

START /D c:\temp notepad.exe
Rynant
źródło
6

Poniższe będzie działać, dokonać odpowiednich podstawień i zapisać je z .cmdrozszerzeniem.

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

Umieść ten plik wsadowy w katalogu w swoim %PATH%i powinieneś być w stanie wywołać go z dowolnej cmd.exeinstancji.

LawrenceC
źródło
1
Zauważ, że może wystąpić nieprzyjemność, jeśli katalog roboczy i plik wykonywalny nie znajdują się na tej samej partycji / dysku.
MBraedley,
2
@LawrenceC, jednak to rozwiązanie wymaga pliku tymczasowego. Lepiej, jeśli można to osiągnąć bez plików tymczasowych
Pacerier,