% HOMEDRIVE% não está fornecendo a saída esperada

1

Quando executo o script de lote abaixo

@echo off
cd /d D:\Home\Folder
echo %HOMEDRIVE%
pause

Eu obtenho H: como saída. Mas, idealmente, deve ser D: . Por que isso acontece?

    
por Mathew 04.07.2016 / 15:00

2 respostas

3

Você está emitindo 2 comandos diferentes e espera o mesmo resultado.

você não precisa inserir a primeira e a segunda declaração ainda será H:.

Isso ocorre porque % HOMEDRIVE% é determinado no login. Pode ser definido pelo controlador de domínio ou pode ser uma configuração local.

Se você quiser retornar a pasta atual, basta digitar o comando cd ou echo %CD%

Se você quiser alterar % HOMEDRIVE% para outra coisa, por exemplo, a pasta atual, use SET HOMEDRIVE=%CD% ou diretamente: SET HOMEDRIVE=D:\Home\Folder

Lembre-se de que definir % HOMEDRIVE% pode ter resultados inesperados se os programas esperarem que % HOMEDRIVE% seja H:.

    
por 04.07.2016 / 15:12
1

Se você quiser determinar a unidade atual, você pode ir temporariamente para a raiz, armazenar o diretório atual e voltar, assim:

pushd \
set MYDRIVE=%CD%
popd

A variável MYDRIVE terá uma barra no final (enquanto HOMEDRIVE não), mas o Windows ignora as barras extras nos caminhos, por isso, mesmo que você acabe tentando acessar algo como D:\some\path , ainda funcionará bem.

    
por 04.07.2016 / 18:38