@ECHO OFF
SETLOCAL
SET "sourcedir=U:\sourcedir"
SET "destdir=U:\destdir"
xcopy /T /E "%sourcedir%\*.mtl" "%destdir%\"
SET "source=:"
FOR /f "delims=" %%a IN (
'xcopy /L /s "%sourcedir%\*.mtl" "%destdir%\" '
) DO (
CALL :chksubdir "%%a"
)
GOTO :EOF
:chksubdir
ECHO "%~1"|FIND "\">NUL
IF ERRORLEVEL 1 GOTO :EOF
IF /i "%source%"=="%~dp1" GOTO :EOF
SET "source=%~dp1"
CALL SET "sub=%%source:%sourcedir%=%%"
COPY "%~1" "%destdir%%sub%%~nx1" >NUL 2>nul
GOTO :eof
Вам потребуется изменить настройки sourcedir
и destdir
в соответствии с вашими обстоятельствами.
Первым шагом является использование опции /t
xcopy
для создания целевого поддерева.
Установив source
в значение фиктивного типа, используя подпрограмму chksubdir
для обработки каждой строки XCOPY /L /S
для файлов. Это только список и на самом деле не делает копию.
Подпрограмма проверяет, содержит ли поставляемый параметр \
, поскольку самая последняя строка xcopy /L
- это счет-отчет. Если нет \
, выйдите.
В противном случае сопоставьте source
с приводом + путь к выбранному файлу. Если они не равны, то найден новый каталог, иначе пропустите этот файл.
Установить source
в новое имя подкаталога, а затем установить sub
на это полное имя минус относительный корень, указав строку подкаталога ниже относительного корня.
Строка все вместе для создания простой команды copy
.
У вас должна быть идея, как выбрать «один» .mtl-файл. Новейший, самый старый, первый, последний, вообще. – LotPings