Como alterar o diretório de trabalho atual usando um arquivo em lote

110

Preciso de ajuda para escrever um arquivo em lote. Eu tenho um caminho armazenado em uma raiz variável da seguinte maneira:

set root=D:\Work\Root

Então, estou mudando meu diretório de trabalho para esta raiz da seguinte maneira:

cd %root%

Quando executo este arquivo em lote de qualquer lugar na unidade D, isso é feito com êxito. Mas quando executo o mesmo arquivo em lote de outra unidade, cd% root% não funciona.

Existe uma maneira de obter a letra da unidade da variável raiz? Posso então mudar o diretório atual para esta unidade primeiro e, em seguida, cd% root% deve funcionar.

Ananya
fonte

Respostas:

160

Especifique /Dpara alterar a unidade também.

CD /D %root%
Andriy M
fonte
1
Outras respostas dizem \d(minúsculas) há uma diferença entre os dois? A opção não faz distinção entre maiúsculas e minúsculas?
Joseph
3
@josch: Sim, se estamos falando sobre os comandos internos do CMD, os parâmetros de troca como /Dacima não diferenciam maiúsculas de minúsculas ( /D= /d), assim como os próprios comandos ( CD= cd). Acredito que também é válido para todos os utilitários externos do Windows de linha de comando (como FINDSTR, SORTetc.) Ferramentas de terceiros, por outro lado, pode utilizar parâmetros de maiúsculas e minúsculas.
Andriy M
não vale uma resposta própria, mas você pode set "root=/d D:\Work\Root"e cd %root%ou mesmo set "root=cd /d D:\Work\Root"e apenas%root%
Stephan
40

Use apenas cd /d %root%para trocar letras de driver e alterar diretórios.

Como alternativa, use pushd %root%para alternar letras de unidade ao alterar diretórios, bem como armazenar o diretório anterior em uma pilha para que você possa usar popdpara voltar.

Observe que pushdisso também permitirá que você altere os diretórios para um compartilhamento de rede. Na verdade, ele mapeará uma unidade de rede para você e, em seguida, removerá o mapeamento quando você executar o popdpara esse diretório.

Gabe
fonte
29

Tente isto

chdir /d D:\Work\Root

Aproveite o enraizamento;)

arraia
fonte
6
Rooting? O que isso significa neste contexto?
Mathias Lykkegaard Lorenzen
Deve-se observar que antes e depois do diretório, "deve ser colocado assim; chdir / d" D: \ Work \ Root "
Ad Infinitum
12

Uma sintaxe mais simples pode ser

pushd% root%

NapkinBob
fonte
3
Uau, de todas as soluções, a classificação mais baixa é a que realmente funcionou perfeitamente! Obrigado!
Arto Kalishian