Как `pushd` точно ведет себя относительно пути с косой чертой`/`?
Рассмотрим следующие команды, полученные из командной строки:
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 ответ
Прочтите статью 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
==>