Тема: CMD/BAT: перенос файлов из подпапок
Здравствуйте. Помоги, пожалуйста, напишите батник. Есть папка, в ней подпапки с разными файлами. Нужно из подпапок переместить в текущую папку файлы .pdf. Имя файлов написаны на кириллице.
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Здравствуйте. Помоги, пожалуйста, напишите батник. Есть папка, в ней подпапки с разными файлами. Нужно из подпапок переместить в текущую папку файлы .pdf. Имя файлов написаны на кириллице.
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
andypetr
Супер. Большое спасибо. Я уверен, многим это пригодиться.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться