2013-04-19 6 views
0
cd "C:\path\to\directory\" >nul & echo %CD% 

Скажем, я запустил это в C:\dir. Я ожидаю, что он выведет C:\path\to\directory, так как это то, что он делает, если я запускаю каждую команду по отдельности и последовательно. Но это не так. Когда две команды сортируются вместе, он выводит текущий путь - например. C:\dir.пытается получить абсолютный путь к файлу от относительного пути от CLI

Любые идеи, почему? Альтернативно, любые идеи относительно того, как я могу получить полный путь от относительного пути через CLI?

+0

По отношению к чему? Кому% cd%? – Endoro

+0

К текущему каталогу. то есть. скажем, вы находитесь в папке 'C: \ path \ to \ directory \'. Вы делаете 'cd .. \ ..', а затем '' echo% CD% ', и вы получите' C: \ path \ '. Но' cd ".. \ .."> nul & echo% CD% ' не дает мне то же самое, и я хочу знать почему. – neubert

+0

Это на самом деле функция. Вы можете сделать 'cd \ something \ else & do something & cd% CD%', и она изменится на другой каталог, do что-то, затем измените назад. –

ответ

1

Если вы сконцентрируете две команды, они действуют как блок кода, и все% переменных% не могут изменить их значение. Вы должны использовать замедленное расширение:

@ECHO OFF & setlocal enabledelayedexpansion 
cd "C:\path\to\directory\" >nul & echo !CD! 

выход будет:

C:\path\to\directory 
Смежные вопросы