пытаюсь скопировать файлы с четырьмя или менее символами в имени файла с определенным расширением в новую папку. Я пытался сделать это уже несколько часов! начинаю нервничать. Я использовал команду копирования и подстановочные знаки ? и *
решение1
Как указал AFH в комментариях, простое "COPY ????.ext" будет работать с именами файлов из четырехили менееchars. В glob-style сопоставлении с образцом в системах на базе DOS * означает "0 или более символов", а ?, по-видимому, означает ноль или один символ. Однако обязательно поймите, что этот тип сопоставления с образцом выполняется на уровне приложения, то есть Windows (и DOS, если на то пошло), передает командную строку точно так, как она набрана, программе для запуска. Если вы введете "????.ext", это именно то, что видит команда COPY.
Сравните это с другими оболочками, с которыми я работал, например, un*x (bash, tcsh и т. д.), где интерпретатор команд сначала расширяет все совпадения с шаблоном и передает полный список файлов команде. То есть, в этих оболочках, если вы вводите "copy file.?", оболочка вызывает "copy file.1 file.2 file.3", "copy" обычно никогда не видит литеральный аргумент "file.?".
(Вот почему мой первоначальный первый ответ был неверным — я проверил его с помощью команды, которая быланет(Расширение способа, которым CMD.EXE в Windows мог бы это сделать. Просто об этом нужно знать!)
В обычной консоли/командной строке Windows (которая есть) нет возможностинетDOS, кстати!) сделать это одной командой из-за того, как работают ? и * в Windows: ? соответствует одному символу, а * соответствует максимально возможному количеству. Ни один из них не позволяет указать количество. Но используя пакетный файл для последовательного запуска каждой команды, можно добиться того же эффекта:
@echo off
copy "????.ext" "target folder"
copy "???.ext" "target folder"
copy "??.ext" "target folder"
copy "?.ext" "target folder"
Используя различные методы пакетного файла, вы также можете модифицировать его для работы с именами файлов другой длины или использования других целевых папок и т. д.
Кроме того, в современных ОС Windows у вас, скорее всего, есть VBScript, доступный через Windows Script Host, а в Win8 у вас должен быть PowerShell, оба из которых позволяют использовать гораздо более обширную логику программирования, такую как мощные регулярные выражения и т. д.