Пакетное создание папок на основе расширения и перемещение в них файлов.

У меня есть структура каталогов, которая выглядит следующим образом:

      Folder A
 A.PDF
 A_1.TIF
 A_2.TIF
 A_3.TIF

Folder B
 B.PDF
 B_1.TIF
 B_2.TIF
 B_3.TIF

Folder C
 C.PDF
 C_1.TIF
 C_2.TIF
 C_3.TIF

Я хочу, чтобы сценарий сортировал PDF-файлы и TIFF в отдельные папки с определенным заголовком, например:

      Folder A
 Representation_1
  A.PDF
 Preservation_1
  A_1.TIF
  A_2.TIF
  A_3.TIF

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

      @echo off
setlocal EnableDelayedExpansion

REM Put here the path where the files are:
set "Source=%~dp0"

for %%a in ("%Source%\*") do (
set "File=%%~na"
for /d %%b in ("%Source%\*") do (
set "Folder=%%~nb"
If "!File:~0,18!"=="!Folder:~0,18!" Move "%%a" "%%b"
)
if Exist "%%a" md "!Source!\!File:~0,18!"& move /y "%%a" "!Source!\!File:~0,18!"
)

1 ответ

Если бы я вас правильно понял, это было бы примерно так. Просмотрите подпапки источника, внутри подпапки, если есть файлы PDF, создайте папку с именем Representation_1 и переместите все файлы PDF в эту папку. Если есть файлы tiff или tif, переместите их в папку Preservation_1 внутри подпапки.

      @echo off

set Source=%userprofile%\desktop\test

pushd "%Source%"

for /f "delims=" %%a in ('dir /b /ad *') do (
                                             dir "%%a\*.pdf">nul && if not exist "%%a\Representation_1" md "%%a\Representation_1"
                                             dir "%%a\*.tif*">nul && if not exist "%%a\Preservation_1" md "%%a\Preservation_1"
                                             for /f "delims=" %%b in ('dir /b /a-d %%a\*') do (
                                                                                               if /i "%%~xb"==".pdf" move "%%a\%%~b" "%%a\Representation_1"
                                                                                               if /i "%%~xb"==".tiff" move "%%a\%%~b" "%%a\Preservation_1"
                                                                                               if /i "%%~xb"==".tif" move "%%a\%%~b" "%%a\Preservation_1"
                                                                                              ) 
                                            )
popd
exit

Другие вопросы по тегам