Como definir o diretório de trabalho de um executável por meio da linha de comando, antes de executá-lo?

35

Se eu executar um programa na linha de comando cuja localização é resolvida através da variável de ambiente Path , o diretório de trabalho do programa geralmente é definido como seu diretório de instalação.

Gostaria de executar esse programa a partir de uma janela do console e definir seu diretório de trabalho para o diretório atual ou outro diretório explícito. Consegui fazer isso copiando temporariamente o programa para o meu diretório de trabalho - existe outra maneira de fazer isso nos ambientes cmd.exe ou powershell.exe?

A analogia do shell do Windows a esta tarefa é criar um atalho e definir a propriedade "Iniciar em" de acordo.

Steve Guidi
fonte

Respostas:

40

Para definir explicitamente o diretório de trabalho, uma solução do PowerShell seria usar o Start-Processcmdlet com o -WorkingDirectoryparâmetro

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

Usando o alias start, o parâmetro posicional e o nome parcial do parâmetro, isso pode ser escrito como:

start notepad.exe -wo c:\temp

O CMD também tem um STARTcomando. Para isso, use o /Dparâmetro para especificar o diretório de trabalho:

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

O abaixo funcionará, faça as substituições apropriadas e salve-o com uma .cmdextensão.

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

Coloque esse arquivo em lotes em um diretório no seu %PATH%e você poderá chamá-lo em qualquer cmd.exeinstância.

LawrenceC
fonte
11
Observe que o funkiness pode ocorrer se o diretório de trabalho e o executável não estiverem na mesma partição / unidade.
precisa saber é o seguinte
2
@LawrenceC, no entanto, esta solução requer um arquivo temporário. É melhor se isso poderia ser conseguido usando há arquivos temporários
Pacerier