Понимание того, как Windows выполняет сопоставление с образцом в командной строке

2

У меня есть 500 файлов в каталоге, test1.txt для test500.txt

По ссылке Microsoft http://msdn.microsoft.com/en-us/library/ff469270.aspx я не совсем понял разницу между * и <

Следующая команда в командной строке выдает «Файл не найден»

dir "test5<"

Однако dir "test5<<"перечисляет все файлы test5 *.

В чем причина такого поведения. Я не смог найти ни одной статьи, которая лучше объясняет, как "<" будет себя вести.

[править 1]

Также, если нет расширений, т.е. файлов test1 - test500, "test5???"совпадает с «test5», «test50» и «test500».

Разве это не должно давать «файл не найден», так как их три?

SyncMaster
источник

Ответы:

2

<похоже на *, за исключением одного различия. <не совпадает с последним .в имени файла.

test5< ничего не соответствует, потому что не соответствует расширению файлов в каталоге.

test5<<совпадает с ними, потому что первое <соответствует именам файлов вплоть до .for для расширения файла, а второе <соответствует самому расширению файла.

Der Hochstapler
источник
это объясняет большое спасибо. Также, если нет расширений, "test5 ???" соответствует "test5", "test50" и "test500". Разве не должно выдаваться «файл не найден», так как их три?
SyncMaster
@SyncMaster Дело в том, что сайт, который вы разместили, объясняет алгоритм, который только определяет, является ли данный файл шаблоном. Это не полностью объясняет, как шаблон интерпретируется . ?вероятно, означает «ноль или один» символов в командной строке Windows. Объяснения на этом сайте могут вводить в заблуждение.
Der Hochstapler
0

В опубликованной вами статье обсуждаются алгоритмы , а не команды.

Операторы перенаправления< и >являются для командной строки.

Keltari
источник
Я не использую их в качестве оператора перенаправления. Я использую его внутри шаблона для сопоставления файлов.
SyncMaster,
1
@SyncMaster Я не уверен, как сказать это более ясно, это не работает таким образом
Keltari
На самом деле, это так, Келтари. Попытайся. Приготовьтесь к очередному cmdсюрпризу от Microsoft .
JdeBP
Ну, это ново для меня
Keltari