Рассмотрим следующие команды, полученные из командной строки:

D:\test>cd D:/

D:\>cd /test

D:\test>pushd D:/
The syntax of the command is incorrect.

D:\test>pushd "D:/"

D:\>popd

D:\test>cd ..

D:\>pushd /test
The syntax of the command is incorrect.

D:\>pushd "/test"
The syntax of the command is incorrect.

D:\>pushd "D:/test"

D:\test>

Кажется, что процесс cd корректно сокращает / в целом, в то время как pushd принимает их, только если одновременно:

  • Аргумент цитируется
  • Полный путь указан

Это соответствует истине? Это где-нибудь задокументировано?

1 ответ1

1

Прочтите статью MSDN Именование файлов, путей и пространств имен:

Соглашения об именах Следующие фундаментальные правила позволяют приложениям создавать и обрабатывать допустимые имена для файлов и каталогов независимо от файловой системы:

  • Используйте точку, чтобы отделить базовое имя файла от расширения в имени каталога или файла.
  • Используйте обратную косую черту (\) для разделения компонентов пути. Обратная косая черта разделяет имя файла от пути к нему и одно имя каталога от другого имени каталога в пути. Вы не можете использовать обратную косую черту в имени для фактического файла или каталога, потому что это зарезервированный символ, который разделяет имена на компоненты.
  • При необходимости используйте обратную косую черту как часть имен томов, например, « C:\ » в « C:\path\file » или « \\server\share » в « \\server\share\path\file » для имен универсального соглашения об именах (UNC). Дополнительные сведения об именах UNC см. В разделе « Ограничение максимальной длины пути ».
  • ...

Подробнее о (\)/ (обратном) солидусе: почему Windows использует обратную косую черту для путей и прямую косую черту Unix?

В интерпретаторе команд (cmd.exe) вы можете использовать / в качестве разделителя компонентов пути во многих случаях, но не всегда. Пример:

==> d:\bat\so\second.bat a b c
second.bat parameters: %*=a b c

==> d:/bat/so/second.bat a b c
second.bat parameters: %*=a b c

==> type d:/bat/so/second.bat
The syntax of the command is incorrect.

==> type "d:/bat/so/second.bat"
The system cannot find the file specified.

==> type d:/bat/so\second.bat
The syntax of the command is incorrect.

==> type "d:/bat/so\second.bat"
@echo %~nx0 parameters: %%*=%*

==>

Другой пример:

==> dir d:/bat/so/second.bat
Parameter format not correct - "bat".

==> dir "d:/bat/so/second.bat"
 Volume in drive D is DataDisk
 Volume Serial Number is 4288-6B27

 Directory of d:\bat\so

File Not Found

==> dir "d:/bat/so\second.bat"
 Volume in drive D is DataDisk
 Volume Serial Number is 4288-6B27

 Directory of d:\bat\so

27.11.2015  17:35                32 second.bat
               1 File(s)             32 bytes
               0 Dir(s)  910 153 654 272 bytes free

==>

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