Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Příkazový řádek - úprava bat souboru

Poradíte jak upravit v příkazovém řádku následující prográmek, který rozbalí ZIP soubor, zpracuje jej a výsledný pdf nazve stejně jako zpracovávaný ZIP a každý další pdf se bude jmenovat jako právě zpracovaný ZIP? Zde tedy kal.pdf aby se nazýval stejně jako ZIP?

FOR %%G IN (*.zip) DO unzip.exe "%%G"

FOR %%G IN (*.jpg) DO c:/im/ImageMagick-6.3.1-Q16/convert "%%G" -strip -interlace plane "%%~nG.pdf"

pdftk 0.pdf 1.pdf 2.pdf 3.pdf 4.pdf 5.pdf 6.pdf 7.pdf 8.pdf 9.pdf 10.pdf 11.pdf 12.pdf cat output kal.pdf

Změna předmětu, původně: Příkazový řádek (host)

Předmět Autor Datum
Nevím, jestli jsem pochopil správně. for %%G in (*.zip) do ( set namepdf=%%~nG.pdf zpracování pdftk…
oval 30.09.2011 00:20
oval
děkuji, zdá se že to bude fungovat, jen tam mám ještě ten unzip: FOR %%G IN (*.zip) DO unzip.exe "%%…
puclik 30.09.2011 18:26
puclik
Ano, tak to provádí, dva for v sobě, takže se zpracuje vždy aktuální zip s jeho obsahem. unzip -o př…
oval 30.09.2011 22:55
oval
pokud spustím, tak to hned na začátku chce rozbalit všechny ZIP soubory a tím přepsat jpg. Po úpravě…
puclik 01.10.2011 09:00
puclik
Co tam dělá dvakrát FOR *.zip, druhý tam nepatří.
oval 02.10.2011 00:34
oval
Po odstranění FOR, zůstane tam tedy pouze na řádku: set namepdf=%%~nG.pdf, to nevytvoří spojené pdf,…
puclik 02.10.2011 07:51
puclik
Když to provedeš jednou ručně, tak pdftk spojí pdfka v jedno pdf? Aneb překonvertování souboru jpg p…
oval 02.10.2011 22:21
oval
Pokud to provedu ručně, tak to vytvoří bez problémů, stačí jen změnit %namepdf% na kal.pdf a jde to.…
puclik 03.10.2011 08:25
puclik
tak si tam z toho scriptu odstran to pociatocne @echo off, aby si videl jake ten script vytvara prik…
MM.. 03.10.2011 20:29
MM..
to jsem zkoušel hned, výpis je zřejmě ok, ale bohužel to nic neudělá...
puclik 03.10.2011 20:46
puclik
for %%H in (*.zip) do ( unzip -o %%H FOR %%G IN (*.jpg) DO c:/im/ImageMagick-6.3.1-Q16/convert " %%G…
oval 03.10.2011 21:13
oval
bohužel toto také nic neudělá...
puclik 03.10.2011 21:23
puclik
btw. v tomto poslednom scripte od oval-a nevidim ziadne %namepdf%, tak co kde menis?
MM.. 03.10.2011 20:33
MM..
to se tykalo dotazu zdali to spoji pokud to udelam rucne a script z 1.10. 9:00 spojuje pdf v pořádku…
puclik 03.10.2011 20:48
puclik
v scripte z 1.10 FOR %%G IN (*.zip) DO (unzip.exe "%%G" zmen na FOR %%H IN (*.zip) DO (unzip.exe "%%…
MM.. 03.10.2011 21:26
MM..
Super, to je přesně ono. Nyní to již funguje. Děkuji mnohokrát za pomoc všem...
puclik 03.10.2011 22:06
puclik
a pocuj akoze vytvaras si nejake pdf s normalnymi nazvami a potom pdftk spustas aby spajal suboruy s…
MM.. 03.10.2011 21:32
MM..
0.pdf 1.pdf atd. se mi vždy vytvoří přes IM, protože v ZIP souboru jsou vždy obrázky 0.jpg 1.jpg atd…
puclik 03.10.2011 22:06
puclik
jaj no ono sa to dalo urobit aj dynamicky s nazvami z toho zip, napr. tak ze si v tom hlavnom .bat p… poslední
MM.. 03.10.2011 23:00
MM..
máš tam vnořené cykly for, a v každém sis oblíbil použít stejnou proměnnou %g? no třeba to funguje.…
lední brtník 02.10.2011 10:38
lední brtník
Můžete mi to prosím zkusit napsat tak, aby to fungovalo? Přeci jen jsem v tomto oboru naprostá LAMA.…
puclik 02.10.2011 17:36
puclik

Nevím, jestli jsem pochopil správně.

for %%G in (*.zip) do ( set namepdf=%%~nG.pdf
zpracování
pdftk a místo kal.pdf dej %namepdf%
)

Takže asi takto:

for %%G in (*.zip) do ( set namepdf=%%~nG.pdf

FOR %%G IN (*.jpg) DO c:/im/ImageMagick-6.3.1-Q16/convert "%%G" -strip -interlace plane "%%~nG.pdf"

pdftk 0.pdf 1.pdf 2.pdf 3.pdf 4.pdf 5.pdf 6.pdf 7.pdf 8.pdf 9.pdf 10.pdf 11.pdf 12.pdf cat output %namepdf%
)

děkuji, zdá se že to bude fungovat, jen tam mám ještě ten unzip: FOR %%G IN (*.zip) DO unzip.exe "%%G" ale protože každý ZIP má stejné názvy, tak mi to nefunguje, protože je to chce přepisovat. Je možné to napsat aby vždy takto zpracoval jeden ZIP celý a potom další...? Nebo by alespoň stačilo na začátku přejmenovat hromadně ZIP soubory aby začínaly 001"jméno souboru", 002"jméno souboru", 003"jméno souboru" atd.

pokud spustím, tak to hned na začátku chce rozbalit všechny ZIP soubory a tím přepsat jpg. Po úpravě aby rozbaloval postupně mi to zase nechce přes pdftk spojit pdf:

FOR %%G IN (*.zip) DO (unzip.exe "%%G"
FOR %%G IN (*.zip) do set namepdf=%%~nG.pdf
FOR %%G IN (*.jpg) DO c:/im/ImageMagick-6.3.1-Q16/convert "%%G" -strip -interlace plane "%%~nG.pdf"
pdftk 0.pdf 1.pdf 2.pdf 3.pdf 4.pdf 5.pdf 6.pdf 7.pdf 8.pdf 9.pdf 10.pdf 11.pdf 12.pdf cat output %namepdf%
del /f *.jpg)

Když to provedeš jednou ručně, tak pdftk spojí pdfka v jedno pdf? Aneb překonvertování souboru jpg přes imagemagick do pdf souboru vznikne opravdu soubor formátu pdf? Chybu určitě hlásí pdftk, pokud ano, pak to není chyba scriptu.
www.jpegtopdf.com

@echo off
for %%H in (*.zip) do (
unzip -o %%H
FOR %%G IN (*.jpg) DO echo convert" %%G" -strip -interlace plane "%%~nG.pdf"
echo pdftk 0.pdf 1.pdf 2.pdf 3.pdf 4.pdf 5.pdf 6.pdf 7.pdf 8.pdf 9.pdf 10.pdf 11.pdf 12.pdf cat output %%~nH.pdf
del /f *.jpg
)

Výstup scriptu:

E:\Temp\!Tmp>.\cc
Archive:  Druhy.zip
  inflating: 3d_509.jpg
  inflating: 3d_510.jpg
  inflating: 3d_511.jpg
  inflating: 3d_514.jpg
  inflating: 3d_529.jpg
convert"3d_509.jpg" -strip -interlace plane "3d_509.pdf"
convert"3d_510.jpg" -strip -interlace plane "3d_510.pdf"
convert"3d_511.jpg" -strip -interlace plane "3d_511.pdf"
convert"3d_514.jpg" -strip -interlace plane "3d_514.pdf"
convert"3d_529.jpg" -strip -interlace plane "3d_529.pdf"
pdftk 0.pdf 1.pdf 2.pdf 3.pdf 4.pdf 5.pdf 6.pdf 7.pdf 8.pdf 9.pdf 10.pdf 11.pdf
12.pdf cat output Druhy.pdf
Archive:  prvni.zip
  inflating: 3d_183.jpg
  inflating: 3d_283.jpg
  inflating: 3d_351.jpg
convert"3d_183.jpg" -strip -interlace plane "3d_183.pdf"
convert"3d_283.jpg" -strip -interlace plane "3d_283.pdf"
convert"3d_351.jpg" -strip -interlace plane "3d_351.pdf"
pdftk 0.pdf 1.pdf 2.pdf 3.pdf 4.pdf 5.pdf 6.pdf 7.pdf 8.pdf 9.pdf 10.pdf 11.pdf
12.pdf cat output prvni.pdf
Archive:  Treti.zip
  inflating: 3d_581.jpg
  inflating: 3d_583.jpg
convert"3d_581.jpg" -strip -interlace plane "3d_581.pdf"
convert"3d_583.jpg" -strip -interlace plane "3d_583.pdf"
pdftk 0.pdf 1.pdf 2.pdf 3.pdf 4.pdf 5.pdf 6.pdf 7.pdf 8.pdf 9.pdf 10.pdf 11.pdf
12.pdf cat output Treti.pdf

E:\Temp\!Tmp>

v scripte z 1.10
FOR %%G IN (*.zip) DO (unzip.exe "%%G"
zmen na
FOR %%H IN (*.zip) DO (unzip.exe "%%H"

FOR %%G IN (*.zip) do set namepdf=%%~nG.pdf
zmen na
set namepdf=%%~nH.pdf
a bez toho FOR!

btw. ked si odstranil echo off tak to urcite bolo vidiet ze co bolo zle, len treba trochu zapojit oci a uvazovat.

jaj no ono sa to dalo urobit aj dynamicky s nazvami z toho zip, napr. tak ze si v tom hlavnom .bat pripravujes nejaky docasny.bat postupne (najprv do neho zapises pdftk potom zapisujes nazvy suborov a nakoniec zavolas ten docasny.bat z hlavneho bat)
Ale ked ti to staci takto tak OK nechaj to uz tak :)

Zpět do poradny Odpovědět na původní otázku Nahoru