2011-03-18 104 views
1

我有這行代碼:創建一個perl腳本批量處理文件

convert 1234_Page_1_....png 1234_Page_2_....png output.pdf 

這將合併(使用ImageMagick)這些特定的PNG到一個單一的PDF。我有一堆這種格式的文件。我想對「Page 012」「之前具有相同編號的文件執行此合併/轉換爲pdf操作。有時候有超過兩頁要轉換。

我想在perl腳本中完成這項工作,我可以在Windows上運行。

由於提前, 傑克

回答

2

如果你想打電話轉換(1)儘可能少的時間爲必要的:

#! /usr/bin/perl 

use strict; 
use warnings; 

my %processed =(); 
for my $prefix (map { /^(\d+)/ } glob('[1-9]*_Page_*.png')) { 
    next if $processed{$prefix}++; 
    system("convert ${prefix}_Page_*.png ${prefix}_output.pdf"); 
} 
0

你不能使用這個星號?我會馬上嘗試。

convert 1234_Page_*.png output.pdf 

如果你想可讀的文件,在這裏你去:

import os 

for i in xrange(int(raw_input('How many sets of pages are there? '))): 
    os.system('convert {0}_Page_*.png output_{0}.pdf'.format(str(i))) 

這裏是一個班輪:

python -c "import os; [os.system('convert {0}_Page_*.png output_{0}.pdf'.format(str(i))) for i in xrange(int(raw_input('How many sets of pages are there? ')))]" 
+0

我相信是這樣,但我尋求幫助,通過所有的我有文件的循環。即1234年,1235年,1236年等。我有成千上萬的這樣的文件。 – Jake 2011-03-18 03:06:52

+0

哦,好的。你介意一個Python腳本嗎?我可以做一個簡單的命令來運行它。 – Blender 2011-03-18 03:09:42

+0

那太棒了。謝謝 – Jake 2011-03-18 03:12:23

1

如果你有cygwin(也許mingw嗎? )安裝,試試這個:

for i in `seq 1234 1350` ; do convert ${i}_Page_*.png ${i}_output.pdf ; done 
+0

謝謝,但是如果在序列中缺少一個文件,劇本會掛斷嗎? – Jake 2011-03-18 03:13:19

+0

傑克,不,但它會拋出可能隱藏重要故障的醜陋的錯誤消息。 – sarnold 2011-03-18 03:17:49

+0

我收到了以下消息:在script.pl第1行的循環變量上缺少$。 – Jake 2011-03-18 03:25:13