Где документация, которая объясняет явно аномальное поведение знака равенства ниже?
ШАГИ ДЛЯ РЕПРОДУКЦИИ (в командной строке):
пример с ECHO:
H:\BUGS>echo abc > a-b.txt
H:\BUGS>echo cde > c=d.txt
H:\BUGS>dir
2016-03-13 19:54 6 a-b.txt
2016-03-13 19:54 12 c
H:\BUGS>type a-b.txt
abc
H:\BUGS>type c
cde =d.txt
Заметки:
файл с:
636465203D642E7478740D0A
c d e = d . t x t
файл ab.txt:
616263200D0A
a b c
ОДНАКО (здесь '=' становится частью действительных имен файлов, если я использую кавычки):
H:\BUGS>ren a-b.txt a=b.txt
The syntax of the command is incorrect.
H:\BUGS>ren a-b.txt "a=b.txt"
H:\BUGS>ren c "c=d.txt"
H:\BUGS>dir
2016-03-13 19:54 6 a=b.txt
2016-03-13 19:54 12 c=d.txt
знак равенства является допустимым символом имени файла.
FWIW, кажется, что '=' не в кавычках имеет странное специальное значение в командной строке DOS.
OTOH, '=' является допустимым символом имени файла.
« Наименование файлов, путей и пространств имен »
используя Windows 8.1
редактировать:
H:\BUGS>echo def > "d=e.txt"
H:\BUGS>dir
2016-03-13 20:36 6 d=e.txt
H:\BUGS>type "d=e.txt"
def
Синтаксис выше работает.
конец редактировать.
редактировать № 2:
Майкл Франк помог мне найти больше информации.
Его информация позволила мне найти интересную SO-статью « cmd-запятая для разделения параметров по сравнению с пространством?"
H:\BUGS>type Frank.cmd
@echo %1/%2/%3
H:\BUGS>Frank 1 2 3
1/2/3
H:\BUGS>Frank 1=2=3
1/2/3
H:\BUGS>Frank 1;2;3
1/2/3
H:\BUGS>Frank 1,2,3
1/2/3
H:\BUGS>Frank 1/2/3
1/2/3//
в приведенном выше, различные символы используются в качестве разделителей.
когда /
использовался в качестве разделителя выше, добавляется дополнительный /
; это было бы ошибкой imho.
в " cmd- запятая для разделения параметров по сравнению с пробелом?«Как пишет Тим Робинсон », в Windows программы отвечают за синтаксический анализ своих собственных командных строк.Оболочка анализирует перенаправления и каналы, а затем передает остальную часть командной строки программе в одну строку ».
НИЖНЯЯ ЛИНИЯ: кажется, что там, где необходим разделитель, =
действует как разделитель; в некоторых случаях =
вызывает синтаксическую ошибку, в других =
просто знак равенства.
конец редактирования № 2.