Я пытаюсь выяснить, как написать скрипт, который будет принимать такие файлы:

img123
img123back
img124
img125
img125back
img126
img127

Мне нужно переместить все файлы, которые имеют тот же номер, что и файлы со словом «назад», в отдельную папку. Пример результатов:

img123
img123back
img125
img125back

1 ответ1

0

Вы можете использовать for /f для итерации вывода команды dir относительно исходного каталога. Вы можете использовать некоторую условную логику if и для подстановки переменных цикла, чтобы подтвердить, что файлы с единственной строкой "назад" существуют, и если это так, то вы скопируете этот файл и файл с тем же именем без соответствующей строки.

@ECHO ON

SET "srcPath=C:\Source\Path"
SET "destPath=C:\Copy\Path"
SET "keyword=back"

FOR /F "TOKENS=*" %%A IN ('DIR /B /A-D "%srcPath%\*"') DO (
    IF EXIST "%%~DPA%%~NA%keyword%%%~XA" XCOPY /Y /F "%%~DPA%%~NA%keyword%%%~XA" "%destPath%\" & XCOPY /Y /F "%%~FNXA" "%destPath%\"
    )
PAUSE
EXIT

Дополнительные ресурсы

  • Для /F
  • Dir
  • Если

  • Пакетные замены (ЗА /?)

    Кроме того, была улучшена замена ссылок на переменные FOR. Теперь вы можете использовать следующий необязательный синтаксис:

    %~I         - expands %I removing any surrounding quotes (")
    %~fI        - expands %I to a fully qualified path name
    %~dI        - expands %I to a drive letter only
    %~pI        - expands %I to a path only
    %~nI        - expands %I to a file name only
    %~xI        - expands %I to a file extension only
    
  • XCopy

  • Перенаправление

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