Войти

Показать полную графическую версию : [решено] BAT Создание PDF файлов из группы файлов (JPG)


Страниц : [1] 2

raquelle
14-03-2014, 10:04
Доброго времен суток! Помоги пожалуйста решить такую задачу. Имеется множество папок 1, 2, 3 ... N, в каждой папке содержится по три файла JPG, из них необходимо сделать многостраничный PDF и присвоить имя файлу как у папки, в которой лежат изначальные файлы. И сохранить файл PDF также в папке с изначальными файлами. Заранее спасибо!

Iska
14-03-2014, 10:12
Имеется множество папок 1, 2, 3 ... N »
Перечень их имён известен или как?

в каждой папке содержится по три файла JPG, »
Что делать, если не лежат или не три?

многостраничный »
Это уж как выйдет.

raquelle
14-03-2014, 10:40
Перечень их имён известен или как? »
имена у папок 1,2,3 и тд.

Что делать, если не лежат или не три? »
в каждой папке всегда по три файла, но если их нет..то ничего не делать.

Цитата raquelle:
многостраничный »
Это уж как выйдет. »
обязательная необходимость из трех файлов JPG сделать один файл PDF.

Iska
14-03-2014, 10:46
и тд. »
Чем заканчивается «и тд.» известно или нет?

raquelle
14-03-2014, 11:01
Чем заканчивается «и тд.» известно или нет? »
Нет, не известно..может быть как и 50 папок так и 500 папок.

Iska
24-03-2014, 00:47
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"
-запустила из папки, где находятся необходимые папки.
и результата нет.

Iska
24-03-2014, 14:42
-запустила из папки, где находятся необходимые папки.
и результата нет. »
И не должно быть. Просто перетащите папку в Проводнике на пакетный файл или его ярлык.

raquelle
31-03-2014, 08:43
Iska, Спасибо, все работает)

se_arts
26-05-2017, 14:58
Добрый день. На данной странице нашел нужный ответ на мой вопрос. Но никак не могу добиться результата. Помогите разобраться, что я неправильно делаю?
Записал код в бат-файл (код указан в 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 и не получаю результат.
Что я неправильно делаю (сделал)?

Iska
31-05-2017, 11:14
se_arts, опишите Вашу задачу.

se_arts
06-06-2017, 11:13
Добрый день, 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
Пытался использовать данную строку в Вашем коде - результат не получил.

Подскажите, что я не правильно делаю?

Iska
12-06-2017, 06:32
Задача и решение очень похожи на задачу и ее решение для 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

Iska
14-06-2017, 11:25
Не надо изобретать велосипед. Откройте окно консоли командной строки, запустите пакетный файл оттуда, указав путь к искомой папке параметром пакетного файла. Будет видно, что и как.

webresurs
14-06-2017, 12:03
Не надо изобретать велосипед. »

- опять "25"!!!

webresurs
15-06-2017, 09:14
Не надо изобретать велосипед »

то же самое
win+r cmd "C:\htp\13.cmd C:\htp\2"

Iska
15-06-2017, 09:30
Покажите скриншот окна консоли после выполнения пакетного файла. Покажите содержимое «C:\htp\2».

alpap
15-06-2017, 11:26
2>nul dir /a:d /b /s "C:\htp\2" »
C:\htp\2, исходя отсюда - директория, вопрос что вы запускаете первым параметром для C:\htp\13.cmd в строке: C:\htp\13.cmd C:\htp\2

se_arts
15-06-2017, 16:57
Добрый день, 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