1

Когда я запускаю приведенный ниже пакетный скрипт

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

Я получаю H: в качестве выхода. Но в идеале это должен быть D:. Почему это так?

2 ответа2

3

Вы выдаете 2 разные команды и ожидаете одинакового результата.

вам не нужно вводить первое и второе утверждение, все равно будет H:.

Это потому, что % HOMEDRIVE% определяется при входе в систему. Он может быть установлен контроллером домена или может быть локальным параметром.

Если вы хотите вернуть текущую папку, просто введите команду cd или echo %CD%

Если вы хотите изменить % HOMEDRIVE% на что-то другое, например, текущую папку, используйте SET HOMEDRIVE=%CD% или напрямую: SET HOMEDRIVE=D:\Home\Folder

Помните, что установка % HOMEDRIVE% может привести к неожиданным результатам, если программы ожидают, что % HOMEDRIVE% будет H:.

1

Если вы хотите определить текущий диск, вы можете временно перейти в корневой каталог, сохранить текущий каталог и вернуться обратно, например:

pushd \
set MYDRIVE=%CD%
popd

Переменная MYDRIVE будет иметь косую черту в конце (в то время как HOMEDRIVE нет), но Windows игнорирует дополнительные косые черты в путях, поэтому даже если вы попытаетесь получить доступ к чему-то вроде D:\\some\path , она все равно будет отлично работает

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .