1

Я использую команду "переместить" с шаблоном подстановки в приглашении CMD под Windows 7.

В моем исходном каталоге у меня есть следующие файлы:

 movie1.avi
 movie1.avi_metadata
 movie2.avi
 movie2.avi_metadata

Если я наберу команду move source\*.avi dest она переместит все четыре файла, хотя я ожидаю, что она будет перемещать только два файла *.avi а не файлы *.avi_metadata .

Как и ожидалось, move source\*.a dest и move source\*.av dest , не перемещайте файлы. Однако если длина расширения для шаблона с подстановочными символами составляет 3 символа, он будет перемещать все расширения, начинающиеся с этих первых трех символов.

Это ошибка в команде "move" или ожидаемое поведение, и задокументировано ли это где-нибудь?


Изменить: Джон Уоттс отмечает, что это, вероятно, делать для "коротких" имен файлов.

Можно ли тогда заставить команды в интерпретаторе CMD работать только с длинными именами файлов и игнорировать короткие имена файлов?

1 ответ1

2

Вы можете передать DIR /B через FINDSTR, чтобы отфильтровать ненужные файлы. Вы можете обработать эти результаты, используя FOR /F.

for /f "eol=: delims=" %F in ('dir /b /a-d source\*.avi^|findstr /lie .avi') do move "source\%F" dest

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