Когда я запускаю приведенный ниже пакетный скрипт
@echo off
cd /d D:\Home\Folder
echo %HOMEDRIVE%
pause
Я получаю H: в качестве выхода. Но в идеале это должен быть D:. Почему это так?
Когда я запускаю приведенный ниже пакетный скрипт
@echo off
cd /d D:\Home\Folder
echo %HOMEDRIVE%
pause
Я получаю H: в качестве выхода. Но в идеале это должен быть D:. Почему это так?
Вы выдаете 2 разные команды и ожидаете одинакового результата.
вам не нужно вводить первое и второе утверждение, все равно будет H:.
Это потому, что % HOMEDRIVE% определяется при входе в систему. Он может быть установлен контроллером домена или может быть локальным параметром.
Если вы хотите вернуть текущую папку, просто введите команду cd
или echo %CD%
Если вы хотите изменить % HOMEDRIVE% на что-то другое, например, текущую папку, используйте SET HOMEDRIVE=%CD%
или напрямую: SET HOMEDRIVE=D:\Home\Folder
Помните, что установка % HOMEDRIVE% может привести к неожиданным результатам, если программы ожидают, что % HOMEDRIVE% будет H:.
Если вы хотите определить текущий диск, вы можете временно перейти в корневой каталог, сохранить текущий каталог и вернуться обратно, например:
pushd \
set MYDRIVE=%CD%
popd
Переменная MYDRIVE
будет иметь косую черту в конце (в то время как HOMEDRIVE
нет), но Windows игнорирует дополнительные косые черты в путях, поэтому даже если вы попытаетесь получить доступ к чему-то вроде D:\\some\path
, она все равно будет отлично работает