Создание сценария perl для пакетных файлов процессов - PullRequest
1 голос
/ 18 марта 2011

У меня есть эта строка кода:

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

Это объединяет эти конкретные PNG-файлы в один PDF-файл (с помощью ImageMagick).У меня есть куча файлов в этом формате.Я хотел бы выполнить это действие слияния / преобразования в pdf для файлов с одинаковым номером перед " Page ".Иногда нужно конвертировать более двух страниц.

Я бы хотел, чтобы это было сделано в Perl-скрипте, который я могу запустить в Windows.

Заранее спасибо, Джейк

Ответы [ 3 ]

2 голосов
/ 18 марта 2011

Если вы хотите вызывать convert (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");
}
1 голос
/ 18 марта 2011

Если у вас установлен cygwin (может быть, mingw ?), Попробуйте следующее:

for i in `seq 1234 1350` ; do convert ${i}_Page_*.png ${i}_output.pdf ; done
0 голосов
/ 18 марта 2011

Вы не можете использовать звездочку для этого? Я попробую прямо сейчас.

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? ')))]"
...