1

Я наткнулся на эти очевидные несоответствия давно, но так и не нашел приемлемого объяснения того, как все это работает. Все это можно ввести в поле «Пуск»> «Выполнить» в Windows XP.

  1. C:folder (без обратной косой черты) работает.

  2. C:Documents and Settings\<username> работает.

  3. Но почему не работает C:folder\subfolder ?

  4. Обратите внимание, что C:folder\..\folder\subfolder работает, когда она кажется логически эквивалентной.

Я нашел это, но это объясняет, почему это должно работать ... http://en.wikipedia.org/wiki/Path_(computing)#MS-DOS/Microsoft_Windows_style

3 ответа3

7

Я только что проверил это, и он работал нормально. Самая важная вещь, которую вам нужно проверить - это использование текущего проводника каталогов. Это должен быть ваш домашний каталог (в моем случае здесь на работе это H:).

Чтобы синтаксис C:folder\subfolder работал, folder должна находиться в текущем рабочем каталоге проводника.

В моем случае у меня есть H:\tests , H:\tests\200930 и H:\tests\200940 и работающий

H:tests\200940

работал как положено.

Я думаю, вам нужно убедиться, что subfolder есть и эта folder\subfolder находится в вашем рабочем каталоге для проводника.

Вы можете просмотреть текущий каталог для проводника, используя инструмент Process Explorer от Sysinternals. Запустив Process Explorer, найдите 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
...

(... вырезаны данные, которые не имеют отношения)

Как видите, синтаксис диска: каталог очень важен для текущего рабочего каталога каждого диска. В случае проводника, он зависит от текущего рабочего каталога для вашего пользователя и корня любого другого диска.

Таким образом, хотя мой домашний каталог - H:\ я могу использовать синтаксис H:directory для доступа к любой папке в моем домашнем каталоге, но если я использую C:directory я ограничен корнем этого диска.

2

Правильный синтаксис: C:\folder\subfolder, обратите внимание на обратную косую черту после C: я предполагаю, что есть некоторая поправка для имени папки c: но она не работает полностью, что приводит к несоответствиям, которые вы заметили.

1

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

Для прямого открытия папки это работает в обоих направлениях, для открытия пути, содержащего подпапку, это не так.

Так, например, это будет работать (если папки существуют, конечно):

  • c: папка с длинным именем \ подпапка
  • с: папкой-с-длинным именем-без пробелов

пока этого не будет:

  • с: папка-с-длинным именем-без пробелов \ подпапка
  • "c: папка с длинным именем \ подпапка"

Я искал объяснение, но пока не смог его найти.

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