Показать полную графическую версию : [решено] BAT Создание PDF файлов из группы файлов (JPG)
raquelle
14-03-2014, 10:04
Доброго времен суток! Помоги пожалуйста решить такую задачу. Имеется множество папок 1, 2, 3 ... N, в каждой папке содержится по три файла JPG, из них необходимо сделать многостраничный PDF и присвоить имя файлу как у папки, в которой лежат изначальные файлы. И сохранить файл PDF также в папке с изначальными файлами. Заранее спасибо!
Имеется множество папок 1, 2, 3 ... N »
Перечень их имён известен или как?
в каждой папке содержится по три файла JPG, »
Что делать, если не лежат или не три?
многостраничный »
Это уж как выйдет.
raquelle
14-03-2014, 10:40
Перечень их имён известен или как? »
имена у папок 1,2,3 и тд.
Что делать, если не лежат или не три? »
в каждой папке всегда по три файла, но если их нет..то ничего не делать.
Цитата raquelle:
многостраничный »
Это уж как выйдет. »
обязательная необходимость из трех файлов JPG сделать один файл PDF.
и тд. »
Чем заканчивается «и тд.» известно или нет?
raquelle
14-03-2014, 11:01
Чем заканчивается «и тд.» известно или нет? »
Нет, не известно..может быть как и 50 папок так и 500 папок.
raquelle, примерно так:
@echo off
setlocal enableextensions enabledelayedexpansion
set sSourceFolder=%~1
if not defined sSourceFolder (
echo Usage: %~0 ^<Source folder^>
exit /b 1
)
if not exist "%sSourceFolder%" (
echo Source folder [%sSourceFolder%] not found.
exit /b 2
)
for /l %%i in (1, 1, 1000) do if exist "%sSourceFolder%\%%i\*.jpg" (
echo [%sSourceFolder%\%%i]
"%ProgramFiles%\ImageMagick-6.3.4-Q8\convert.exe" "%sSourceFolder%\%%i\*.jpg" -format pdf "%sSourceFolder%\%%i\%%i.pdf"
)
endlocal
exit /b 0
Потребуется загрузить и установить ImageMagick (http://www.imagemagick.org/script/index.php). Исходную папку указывайте параметром пакетного файла (можно просто перетащить в Проводнике папку на пакетный файл или на ярлык на пакетный файл).
raquelle
24-03-2014, 10:03
Iska, никакого результата не получилось. Может делаю что то неверно.
-установила ImageMagick
-в файл блокнота запихала код и изменила строку ""%ProgramFiles%\ImageMagick-6.3.4-Q8\convert.exe" " на "%ProgramFiles%\ImageMagick-6.8.0-Q16\convert.exe"
-запустила из папки, где находятся необходимые папки.
и результата нет.
-запустила из папки, где находятся необходимые папки.
и результата нет. »
И не должно быть. Просто перетащите папку в Проводнике на пакетный файл или его ярлык.
raquelle
31-03-2014, 08:43
Iska, Спасибо, все работает)
Добрый день. На данной странице нашел нужный ответ на мой вопрос. Но никак не могу добиться результата. Помогите разобраться, что я неправильно делаю?
Записал код в бат-файл (код указан в 6-м посте).
Заменил строку %ProgramFiles%\ImageMagick-6.3.4-Q8\convert.exe. В итоге: "d:\Work\Prog\ImageMagick\convert.exe" "%sSourceFolder%\%%i\*.jpg" -format pdf "%sSourceFolder%\%%i\%%i.pdf
Структура: в папке 1 лежит бат-файл 1.bat и папка 2 с вложенными в нее *.jpg.
Перетягиваю (в проводнике) папку 2 на 1.bat и не получаю результат.
Что я неправильно делаю (сделал)?
se_arts, опишите Вашу задачу.
Добрый день, Iska.
Моя задача: Есть рандомное количество папок (могут быть вложения, уровень вложений рандомный), внутри которых находится рандомное количество изображений (JPG или TIF). Необходимо в пределех каждой папки сделать свой PDF, название PDF = названию папки.
Задача и решение очень похожи на задачу и ее решение для raquelle.
Использую Ваш код:
@echo off
setlocal enableextensions enabledelayedexpansion
set sSourceFolder=%~1
if not defined sSourceFolder (
echo Usage: %~0 ^<Source folder^>
exit /b 1
)
if not exist "%sSourceFolder%" (
echo Source folder [%sSourceFolder%] not found.
exit /b 2
)
for /l %%i in (1, 1, 1000) do if exist "%sSourceFolder%\%%i\*.jpg" (
echo [%sSourceFolder%\%%i]
"d:\Work\Prog\ImageMagick\convert.exe" "%sSourceFolder%\%%i\*.jpg" -format pdf "%sSourceFolder%\%%i\%%i.pdf"
)
endlocal
exit /b 0
Результат не получается. Окно CMD открывается и сразу закрывается. Внутри что-то написано, но не успеваю прочитать.
При использовании только такой строки (через "запуск программ") все срабатывает, PDF-файл создается:
d:\Work\Prog\ImageMagick\convert.exe convert -quality 80 d:\In-Out\BAT_CMD_Test\Test17_PDF_convert\2\001\*.jpg d:\In-Out\BAT_CMD_Test\Test17_PDF_convert\2\001\001.pdf
Пытался использовать данную строку в Вашем коде - результат не получил.
Подскажите, что я не правильно делаю?
Задача и решение очень похожи на задачу и ее решение для raquelle. »
Совсем не похоже. Ни задача, ни, тем более, решение.
Окно CMD открывается и сразу закрывается. Внутри что-то написано, но не успеваю прочитать. »
Откройте окно консоли командной строки и выполните пакетный файл в нём. Будет видно.
Моя задача: Есть рандомное количество папок (могут быть вложения, уровень вложений рандомный), внутри которых находится рандомное количество изображений (JPG или TIF). Необходимо в пределех каждой папки сделать свой PDF, название PDF = названию папки. »
Попробуйте так:
@echo off
setlocal enableextensions enabledelayedexpansion
set sSourceFolder=%~1
if defined sSourceFolder (
if exist "%sSourceFolder%" (
for /f "usebackq delims=" %%i in (`2^>nul dir /a:d /b /s "%sSourceFolder%"`) do (
echo [%%~fi]
"%ProgramFiles%\ImageMagick\magick.exe" "%%i\*.jpg" "%%i\*.tif" -format pdf "%%i\%%~ni.pdf"
)
) else (
echo Can't find source folder [%sSourceFolder%].
exit /b 2
)
) else (
echo Usage: %~nx0 ^<sSource folder^>
exit /b 1
)
endlocal
exit /b 0
Путь к целевой папке задаётся параметром пакетного файла (также можно просто перетащить папку на пакетный файл или на ярлык на этот пакетный файл).
P.S.
…рандомное … рандомный … рандомное…»
Есть же два хороших слова — «случайное» и «произвольное».
webresurs
14-06-2017, 10:25
Для "особо оодаренных " можно "разжевать" по подробнее??
создал два файла из постов 6 и 13 с расширением cmd,
- 6.cmd и 13.cmd,
- заменил в коде *.jpg на *.gif
- перетаскиваю на них папку пробегает dos окно и не чего...
на 13.cmd через Console Window Interceptor (Автор - Dragokas) (http://www.cyberforum.ru/vbfavorites.php?do=add&entry_type=post&entry_id=9244413) - получил окно
C:\htp>setlocal enableextensions enabledelayedexpansion
C:\htp>set sSourceFolder=C:\htp\2
C:\htp>if defined sSourceFolder (if exist "C:\htp\2" (for /F "usebackq delims="
%i in (`2>nul dir /a:d /b /s "C:\htp\2"`) do (
echo [%~fi]
"C:\Program Files\ImageMagick\magick.exe" "%i\*.gif" -format pdf "%i\%~ni.pdf"
) ) else (
echo Can't find source folder [C:\htp\2].
exit /b 2
) ) else (
echo Usage: 13.cmd <sSource folder>
exit /b 1
)
C:\htp>endlocal
C:\htp>exit /b 0
Не надо изобретать велосипед. Откройте окно консоли командной строки, запустите пакетный файл оттуда, указав путь к искомой папке параметром пакетного файла. Будет видно, что и как.
webresurs
14-06-2017, 12:03
Не надо изобретать велосипед. »
- опять "25"!!!
webresurs
15-06-2017, 09:14
Не надо изобретать велосипед »
то же самое
win+r cmd "C:\htp\13.cmd C:\htp\2"
Покажите скриншот окна консоли после выполнения пакетного файла. Покажите содержимое «C:\htp\2».
2>nul dir /a:d /b /s "C:\htp\2" »
C:\htp\2, исходя отсюда - директория, вопрос что вы запускаете первым параметром для C:\htp\13.cmd в строке: C:\htp\13.cmd C:\htp\2
Добрый день, Iska.
Ваш код работает. Спасибо за помощь. Работает во всех вложениях (у меня были вложения до 4-ого уровня).
Я немнго переделал Ваш код, чтобы можно было запускать сам bat-файл - мне так удобнее, чем запускать через проводник методом перетягивания.
Вот код:
@echo off
setlocal enableextensions enabledelayedexpansion
for /f "usebackq delims=" %%i in (`2^>nul dir /a:d /b /s "%CD%"`) do (
echo [%%~fi]
"d:\Work\Prog\ImageMagick\convert.exe" "%%i\*.jpg" "%%i\*.tif" convert -quality 75 "%%i\%%~ni.pdf"
)
endlocal
exit /b 0
структура в прикрепленном файле
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.