Я пытаюсь понять, как написать скрипт, который будет принимать такие файлы:
img123
img123back
img124
img125
img125back
img126
img127
Мне нужно переместить все файлы, которые имеют тот же номер, что и файлы со словом «назад», в отдельную папку. Пример результатов:
img123
img123back
img125
img125back
решение1
Вы можете использоватьдля /фдля итерации выводарежкоманду против исходного каталога. Вы можете использовать некоторые условныееслилогика и подстановки переменных цикла for для подтверждения того, что файлы с единственной строкой «back» существуют, и если это так, то вы копируете этот файл и файл с тем же именем, за вычетом строки соответственно.
@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
Дополнительные ресурсы
- Для /Ф
- Режиссёр
Пакетные замены (ДЛЯ /?)
Кроме того, была улучшена подстановка ссылок на переменные 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
- Перенаправление