@ECHO OFF
SETLOCAL
SET "sourcedir=m:\tokyo"
SET "destdir=u:\destdir"
FOR /r "%sourcedir%" %%a IN (*.dll) DO (
FOR %%t IN ("%%~dpa.") DO (
IF /i "%%~nxt" == "bin64" ECHO(copy "%%a" "%destdir%"
IF /i "%%~nxt" == "bin" ECHO(copy "%%a" "%destdir%"
)
)
GOTO :EOF
Вам необходимо изменить настройки sourcedir
и destdir
в соответствии с вашими обстоятельствами.
Необходимые команды COPY просто ECHO
отредактированы для целей тестирования. После проверки правильности команд измените ECHO(COPY
на COPY
, чтобы фактически скопировать файлы. Добавьте >nul
для подавления сообщений отчета (например, 1 file copied
)
Я выбрал .dll
файлы из моих каталогов M:\tokyo...\bin64
и M:\tokyo...\bin
для удобства тестирования.
Используйте for/r
, чтобы найти все файлы .dll
, начиная с назначенного каталога, присваивая каждому по очереди %%a
.
Назначьте литерал (диск + путь) от %% a + .
до %%t
, получив непосредственное имя родительского каталога в качестве «имени файла», и сравните с регистр-нечувствительностью (/i
) «имя файла» для каждая нужная строка по очереди. Это обеспечивает сравнение полного parent-directoryname, поэтому у нас нет ложных совпадений с таким именем, как not_this_directory_even_though_its_a_bin
.