Переместить файлы из одной папки в другую папку с той же иерархией и именем папки с помощью пакетного сценария?

Итак, я хочу переместить файлы во всех преобразованных папках из основной исходной папки в другую выходную папку с той же иерархией.

Source
   -done
   -converted
   -folder1
      -done
      -converted
      -folder11
         -done
         -converted
   -folder2
      -done
      -converted

TO

Output
   (files from converted folder)
   -folder1
      (files from converted folder)
      -folder11
         (files from converted folder)
   -folder2
      (files from converted folder)

Я новичок в пакетном написании сценариев, поэтому я был бы очень признателен, если бы вы могли мне чем-то помочь. Спасибо!!


person Shaun_K    schedule 18.03.2013    source источник
comment
Пожалуйста, покажите нам код, который у вас уже есть.   -  person Endoro    schedule 18.03.2013
comment
В дополнение к тому, что сказал mfm4aa, ознакомьтесь с Как спросить.   -  person BDM    schedule 18.03.2013


Ответы (1)


@ECHO OFF
SETLOCAL
SET source=c:\sourcedir
SET destroot=c:\destdir
SET cdtl=0
:loploop
SET /a cdtl+=1
FOR /f "tokens=%cdtl%*delims=\" %%i IN ("%source%") DO IF NOT "%%j"=="" GOTO loploop
FOR /f "delims=" %%i IN (
    ' dir /b/s/ad "%source%\converted" '
    ) DO CALL :movedest "%%~dpni%"
)
GOTO :eof

:movedest
SET destdir=%~1
FOR /f "tokens=%cdtl%*delims=\" %%d IN (%1) DO SET destdir=%destroot%\%%e
ECHO MD "%destdir%" 2>NUL
ECHO MOVE /y "%~1\*.*" "%destdir%\"
GOTO :eof

ECHO в предпоследних двух строках просто ПОКАЗЫВАЮТ предлагаемые операции. После того, как вы убедились, что хотите сделать это, просто удалите ключевое слово ECHO, чтобы выполнить перемещение.

Обратите внимание, что переключатель /y в команде MOVE перезапишет любую существующую целевую версию файла.

person Magoo    schedule 18.03.2013