пытается скопировать файлы с четырьмя или менее символами в имени файла с определенным расширением в новую папку. Я пытался сделать это в течение нескольких часов! расстраиваться. Я использовал команду копирования и подстановочный знак? а также *

1 ответ1

1

Как указал AFH в комментариях, простое «COPY ????. Ext» будет работать с именами файлов из четырех или менее символов. В сопоставлении с шаблоном типа glob в системах на основе DOS * означает "0 или более символов" и, очевидно,? означает ноль или один символ. Тем не менее, убедитесь, что вы понимаете, что этот тип сопоставления с образцом выполняется на уровне приложения, то есть Windows (и DOS, в этом отношении), передают командную строку в точности так, как это указано в программе для запуска. Если вы наберете «????. Ext», это именно то, что видит команда COPY.

Сравните это с другими оболочками, с которыми я работал, например, в un * x (bash, tcsh и т.д.), Где интерпретатор команд сначала раскрывает все совпадения с образцами и передает команде полный список файлов. То есть в тех оболочках, если вы наберете "копировать файл".«оболочка вызывает« копировать файл.1 файл.2 файл.3 »," копия "обычно никогда не видит буквальный" файл ".аргумент

(И именно поэтому мой первый первый ответ был неверным - я проверил его с помощью команды, которая не расширяла то, что было бы в Windows CMD.EXE .. Просто о чем стоит знать!)

В обычной консоли / командной строке 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, который обеспечивает гораздо более обширную логику программирования, такую как мощные регулярные выражения и так далее.

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