Я споткнулся через эти очевидные несоответствия давно, но никогда не приходил к приемлемому объяснению о том, как все это работало. Все они могут быть введены в поле Start> Run на Windows XP.
C:folder
(без обратной косой черты) работы.
C:Documents and Settings\<username>
работы.
Все же, почему не делает C:folder\subfolder
работа?
C:folder\..\folder\subfolder
действительно работает, когда это, кажется, логически эквивалентно.Я нашел это, но это дает объяснение того, почему это должно работать... http://en.wikipedia.org/wiki/Path_ (вычисляя) #MS-DOS/Microsoft_Windows_style
Я просто протестировал его, и это хорошо работало. Самой большой вещью, которую необходимо проверить, является проводник текущего каталога, использует. Это должен быть Ваш корневой каталог (в моем случае здесь на работе, это - H:).
Для C:folder\subfolder
синтаксис для работы, folder
должен находиться под текущим рабочим каталогом для проводника.
В моем случае я имею H:\tests
, H:\tests\200930
, и H:\tests\200940
и выполнение
H:tests\200940
работавший как ожидалось.
Я предполагаю, что необходимо удостовериться это subfolder
есть ли и это folder\subfolder
находится под Вашим рабочим каталогом для проводника.
Можно просмотреть текущий каталог для проводника с помощью инструмента Process Explorer от Sysinternals. После того как Вы запускаете Проводник Процесса, находите Explorer.exe, двойным щелчком по нему и смотрите на текущий каталог.
Можно на самом деле подтвердить это поведение сами при помощи командной строки и попытки следующего (примечание, Вам будут нужны по крайней мере два диска протестировать это),
H:\> dir
...
Directory of H:\
2009-08-26 09:13 <DIR> Tests
...
H:\> cd Tests
H:\Tests> c:
C:\> dir H:
...
Directory of H:\Tests
2009-08-26 09:13 <DIR> 200930
2009-08-26 09:24 <DIR> 200940
...
C:\> dir H:200940
...
Directory of H:\Tests\200940
...
C:\> cd Windows
C:\Windows> H:
H:\Tests> dir C:System32
...
Directory of C:\WINDOWS\System32
...
( ...
данные сокращения, которые не релевантны),
Поскольку Вы видите, что drive:directory синтаксис очень относится к текущему рабочему каталогу каждого диска. В случае проводника это уверено в текущем рабочем каталоге для Вашего пользователя и корня любого диска.
Таким образом, в то время как мой корневой каталог H:\
Я могу использовать H:directory
синтаксис для получения до любой папки в соответствии с моим корневым каталогом, но если я использую C:directory
Я ограничен корнем того диска.
Правильный синтаксис является C:\folder\subfolder, отметьте обратную косую черту после C: Мое предположение - то, что существует некоторая сумма допуска на имя c:folder, но что это не работает полностью, ведя к несоответствиям, которые Вы отмечаете.
Различие между путем, который работает и тот, который не является, находится в факте на имя существуют пробелы. Если необходимо было поставить полное имя (без обратной косой черты после двоеточия) в кавычках и попытаться открыть его, Вы получите ту же ошибку как с папками, которые не содержат пробелы.
Для непосредственно вводной папки это работает оба пути для открытия пути, который содержит подпапку, которую это не делает.
Таким образом, например, это будет работать (если папки будут существовать, конечно):
в то время как это не будет:
Я искал объяснение, но до сих пор не удался найти то.