1

Тема: CMD/BAT: перенос файлов из подпапок

Здравствуйте. Помоги, пожалуйста, напишите батник. Есть папка, в ней подпапки с разными файлами. Нужно из подпапок переместить в текущую папку файлы .pdf. Имя файлов написаны на кириллице.

2

Re: CMD/BAT: перенос файлов из подпапок

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

@echo off & title %~nx0 & SetLocal EnableExtensions EnableDelayedExpansion

  rem Перебор файлов в текущей папке и всех вложенных папках (FOR /R).
  rem %%a - переменная цикла (полное имя файла). 

  for /r %%a in ("*.pdf") do (

    rem Исключаем файлы из текущей папки:
    rem "%%~dpa" (путь папки для %%a) сравниваем "%%~dp0" (путь к bat-файлу).

    if /i not "%%~dpa" == "%~dp0" (

      rem Имя файла-результата (переносим %%a из его папки в текущую: sFileDest полный путь).
      set "sFileDest=%~dp0%%~nxa"

      rem Заменить на "1"=="0", если нужно просто переписывать существующие в текущей папке PDF.
      if "1"=="1" (
        rem Если PDF с таким именем уже есть в текущей папке, то файл-результат переименовываем: 
        rem name_1.pdf, name_2.pdf, ..., name_99.pdf.
        for /l %%i in (1,1,99) do (
          if exist "!sFileDest!" set "sFileDest=%~dp0%%~na_%%i%%~xa"
        )
      )

      echo.   "%%~a" -^> "!sFileDest!"
      move /y "%%~a"     "!sFileDest!" >nul
    
    )

  )

EndLocal
exit /b

3

Re: CMD/BAT: перенос файлов из подпапок

andypetr
Супер. Большое спасибо. Я уверен, многим это пригодиться.