4

Я случайно ввел эту команду в большой рабочий каталог и получил такой результат:

d:\prog>move ^<
       10 file(s) moved.

Может кто-нибудь объяснить, что я только что сделал? Я понятия не имею :/

Замечания:

Похоже, это происходит только в том случае, если в каталоге есть файлы только с расширением (и без имени), например .a .

1 ответ1

1

Вы используете подстановочный знак, поэтому соответствующие файлы перемещаются. В документации Microsoft (ссылки внизу) указано

  • DOS_QM (> больше чем) Соответствует любому отдельному символу или, встречая точку или конец строки имени, продвигает выражение до конца набора смежных DOS_QM.

  • DOS_STAR (<меньше чем) Сопоставляет ноль или более символов, пока не встретится и не совпадет с финалом. во имя.

Итак, ваша команда "перемещает" (так как целевая папка совпадает с исходной, в которой нет реальной операции перемещения) файлы без расширения, то есть ваша команда эквивалентна move *.

Теперь следующий вопрос должен быть:

  • Если ^< (или просто "<") выбирает файлы без расширения, то почему выбирается файл .a без имени, только с расширением?

И ответ - короткие имена. Подстановочные знаки работают с длинными и короткими именами файлов. Если вы попытаетесь с помощью dir /x перечислить короткие имена файлов, вы, вероятно, увидите, что короткое имя для файла .a не имеет расширения.

Дополнительная информация

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