Toon posts:

Scriptje die meerdere files behandeld

Pagina: 1
Acties:

Verwijderd

Topicstarter
Heren ,

Ik ben bezig met een scriptje die
alle files in een dir moet oppakken en moet omzetten naar pdf
dus ik heb variablex.prn deze moet worden gerenamed naar variablex.ps
dan commando ps2pdf variablex.ps variablex.pdf
Maar als variablexx.pdf als bestaan moet hij niet nog een keer gaan processen dit script wil ik via crontab elke 5 min draaien.

Iemand suggesties

Ik heb al een lockfile etc etc
alleen een goede manier omdit optepakken mis ik nog

ideen welkom

  • odysseus
  • Registratie: Augustus 2000
  • Laatst online: 23:41

odysseus

Debian GNU/Linux Sid

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/usr/bin/perl

$dir = "/mijn/dir";
opendir(DIR, "$dir");
my @files = readdir(DIR);
for $i (@files)
{
  if ($i =~ /.*\.prn$/)
  {
    $j = $i;
    $j =~ s/\.prn$/\.pdf/i;
    unless (-e $j)
    {
    `ps2pdf $i $j`;
    }
  }
}

Ik doe het zo even uit mijn blote hoofd, dus de aanwezigheid van fouten is bijna gegarandeerd, maar heb je aan zoiets niet genoeg?

Leven is het meervoud van lef | In order to make an apple pie from scratch, you must first create the universe.


Verwijderd

Topicstarter
top dat is wat ik zoek
hmm als er vouten in zitten dan haal ik ze er wel uit
komt goed tnx

Verwijderd

Topicstarter
Op woensdag 20 februari 2002 13:03 schreef odysseus het volgende:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/usr/bin/perl

$dir = "/mijn/dir";
opendir(DIR, "$dir");
my @files = readdir(DIR);
for $i (@files)
{
  if ($i =~ /.*\.prn$/)
  {
    $j = $i;
    $j =~ s/\.prn$/\.pdf/i;
    unless (-e $j)
    {
    `ps2pdf $i $j`;
    }
  }
}

Ik doe het zo even uit mijn blote hoofd, dus de aanwezigheid van fouten is bijna gegarandeerd, maar heb je aan zoiets niet genoeg?
hmmm ik blijf een probleempie houden en kom er niet uit
ik krijg een foutmelding op deze regel

$dir = "/mijn/dir";

Deze dir in my case /data/pdfconv
bestaat en er staan .prn in

wat ik ook nog mis in dit scripie in de conversie van .prn naar .ps

ander snapt ps2pdf12 het niet goed.

ik zal nog even kort formuleren wat de bedoeling is

Ik heb een dir /data/pdfconv

hier komen .prn bestanden in
deze moet een script oppakken en omzetten naar .ps
hernoemen dus want de .prn is al postscript.
dan moet het script die .ps bestanden 1 voor 1 dit laten uitvoeren

ps2pdf12 xxxxbladiebla.ps xxxxbladiebla.pdf

Tenzij er al een xxxxbladiebla.pdf bestaat nl

xxxxbladiebla is een variable nl.

Ik ben net begonnen met perl en dit gaat me nog ff net boven mn pet maar heb zoiets nu nodig dus wie kan mij uit de brand helpen


Please who knows the solution ;(

  • odysseus
  • Registratie: Augustus 2000
  • Laatst online: 23:41

odysseus

Debian GNU/Linux Sid

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!/usr/bin/perl

$dir = "/data/pdfconv";
opendir(DIR, "$dir");
my @files = readdir(DIR);
for $i (@files)
{
  if ($i =~ /.*\.prn$/)
  {
    $j = $i;
    $j =~ s/\.prn$/\.ps/i;
    unless (-e $j)
    {
    `mv $i $j`;
    $k = $i;
    $k =~ s/\.prn$/\.pdf/i;
    `ps2pdf12 $j $k`;
    }
  }
}

Werkt dit? Komt weer uit de hoge hoed, maar zit niet zo lastig in elkaar dus zou best eens kunnen werken >:) . Dit bestand kijkt niet of de .pdf al bestaat maar of de .ps al bestaat. Als de nog niet bestaat kun je er immers wel redelijk van uitgaan dan de .pdf ook niet bestaat. Eventueel kun je dat nog aanpassen, maar dat moet je zelf maar weten :) .

* odysseus :* regexps...zelfs de kleintjes ;) .

Leven is het meervoud van lef | In order to make an apple pie from scratch, you must first create the universe.


Verwijderd

Topicstarter
ga gelijk ff testen top snele reactie

Verwijderd

Topicstarter
Yesse deze werkt echt prima tnx you saved a part of my life



:-)> engels he !



:7

Verwijderd

Op donderdag 21 februari 2002 14:05 schreef odysseus het volgende:
code:
1
2
3
4
5
6
7
      ...code...
    $k = $i;
    $k =~ s/\.prn$/\.pdf/i;
    `ps2pdf12 $j $k`;
    }
  }
}

..text..

* odysseus :* regexps...zelfs de kleintjes ;) .
Je maakt ze wel overbodig ingewikkeld he :9. Je kan uit het bovenste stukje zo 4 tekens weg optimizen!
Maar ja regexps zijn natuurlijk geen echte regexps als je ze makkelijk kan lezen / begrijpen :Y)

  • odysseus
  • Registratie: Augustus 2000
  • Laatst online: 23:41

odysseus

Debian GNU/Linux Sid

Op donderdag 21 februari 2002 14:37 schreef Quas het volgende:

[..]

Je maakt ze wel overbodig ingewikkeld he :9. Je kan uit het bovenste stukje zo 4 tekens weg optimizen!
Maar ja regexps zijn natuurlijk geen echte regexps als je ze makkelijk kan lezen / begrijpen :Y)
Welke tekens wil je dan weghalen zonder dat het op de een of andere manier fout kan gaan?

[edit: en dan bedoel ik natuurlijk geen spaties en dergelijke >:) .]

Leven is het meervoud van lef | In order to make an apple pie from scratch, you must first create the universe.


Verwijderd

Nou je kunt de \. bij het replacen weglaten. Je hebt immers al gecheckd of ze matchen op .prn ik neem niet aan dat tijdens het uitvoeren van die scriptjes de punt opeens wegvalt :)
Je kan dus ook gewoon alleen de prn vervangen door pdf ipv. .prn door .pdf .

Kan ook zijn dat ik heel obvious over het hoofd zie, was net wakker :)

Verwijderd

Topicstarter
moawh er zit 1 probleempie is nouja probleem zeg maar gebruikers probleem maar ja :(

Het script pakt geen " bestands naam met spaties.prn "
deze kapt hij af nou moet dit een kleine wijziging zijn lijkt mij ideetje nog ???? :?

m.v.g.

lemac

  • odysseus
  • Registratie: Augustus 2000
  • Laatst online: 23:41

odysseus

Debian GNU/Linux Sid

Op donderdag 21 februari 2002 15:38 schreef Quas het volgende:
Nou je kunt de \. bij het replacen weglaten. Je hebt immers al gecheckd of ze matchen op .prn ik neem niet aan dat tijdens het uitvoeren van die scriptjes de punt opeens wegvalt :)
Je kan dus ook gewoon alleen de prn vervangen door pdf ipv. .prn door .pdf .

Kan ook zijn dat ik heel obvious over het hoofd zie, was net wakker :)
Das waar...bij de eerste regexp moet het nog wel en die had ik gewoon gekopieerd en wat aangepast voor de tweede. Ik dacht er niet aan dat die $ er al voor zorgt dat iets als 'prn.prn' niet voor problemen zorgt.

Leven is het meervoud van lef | In order to make an apple pie from scratch, you must first create the universe.


  • odysseus
  • Registratie: Augustus 2000
  • Laatst online: 23:41

odysseus

Debian GNU/Linux Sid

Op donderdag 21 februari 2002 16:46 schreef lemac4444 het volgende:
moawh er zit 1 probleempie is nouja probleem zeg maar gebruikers probleem maar ja :(

Het script pakt geen " bestands naam met spaties.prn "
deze kapt hij af nou moet dit een kleine wijziging zijn lijkt mij ideetje nog ???? :?

m.v.g.

lemac
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/usr/bin/perl

$dir = "/data/pdfconv";
opendir(DIR, "$dir");
my @files = readdir(DIR);
for $i (@files)
{
  if ($i =~ /.*\.prn$/)
  {
    $i =~ s/\ /\\\ /g;
    $j = $i;
    $j =~ s/\.prn$/\.ps/i;
    unless (-e $j)
    {
    `mv $i $j`;
    $k = $i;
    $k =~ s/\.prn$/\.pdf/i;
    `ps2pdf12 $j $k`;
    }
  }
}

Dit is ervanuitgaande dat je geen namen met horizontale tabs en dergelijke in de naam hebt...daar kun je ook wel iets aan doen, maar daar begin ik niet aan voordat het nodig is :) .

Leven is het meervoud van lef | In order to make an apple pie from scratch, you must first create the universe.


Verwijderd

Topicstarter
euh je bedoel bla-diebla-namen.prn

die zijn hier dagelijks praktijk (jaja slimme usertjes)

en dat zit hier ZO ingeburgerd dat wil je niet weten


:-(

  • odysseus
  • Registratie: Augustus 2000
  • Laatst online: 23:41

odysseus

Debian GNU/Linux Sid

code:
1
2
3
4
5
6
    $k = $i;
    $k =~ s/\.prn$/\.pdf/i;
-     `ps2pdf12 $j $k`;
+     `ps2pdf12 "$j" "$k"`;
    }
  }

Even patchen en klaar ben je, volgens mij werkt dit wel (al heb ik het niet geprobeerd).

Leven is het meervoud van lef | In order to make an apple pie from scratch, you must first create the universe.


Verwijderd

Topicstarter
jemig wat reageer jij snel

Verwijderd

Topicstarter
Ok ik heb nu :

#!/usr/bin/perl
$dir = "/data/pdfconv";
opendir(DIR, "$dir");
my @files = readdir(DIR);
for $i (@files)
{
if ($i =~ /.*\.prn$/)
{
$i =~ s/\ /\\\ /g;
$j = $i;
$j =~ s/\.prn$/\.ps/i;
unless (-e $j)
{
`mv $i $j`;
$k = $i;
$k =~ s/\.prn$/\.pdf/i;
$l = $i;
$l =~ s/\.prn$/\.txt/i;
`ps2pdf12 "$j" "$k" >$l`;
}
}
}


En ik krijg de melding :

mv: cannot stat `Copy of test- file.prn': No such file or directory
GNU Ghostscript 6.51: Unrecoverable error, exit code 1

oops copy pate laat de spaties niet zien van
}
}
}

en de text file die hij aanmaakt geeft dit :

Error: /undefinedfilename in (of-\\)
Operand stack:

Execution stack:
%interp_exit .runexec2 --nostringval-- --nostringval-- --nostringval-- 2 %stopped_push --nostringval-- --nostringval-- --nostringval-- false 1 %stopped_push --nostringval-- --nostringval--
Dictionary stack:
--dict:1029/1476(ro)(G)-- --dict:0/20(G)-- --dict:83/200(L)--
Current allocation mode is local
Last OS error: 2

Verwijderd

Topicstarter
zoals ik het zie kan ps2pdf12 geen spaties aan zodat ik een temp filenaam moet maken
en later moet opslaan als $k
hoe doe ik dit
en dan zeur ik niet meer :-)>

  • odysseus
  • Registratie: Augustus 2000
  • Laatst online: 23:41

odysseus

Debian GNU/Linux Sid

Op donderdag 21 februari 2002 18:30 schreef lemac4444 het volgende:
zoals ik het zie kan ps2pdf12 geen spaties aan zodat ik een temp filenaam moet maken
en later moet opslaan als $k
hoe doe ik dit
en dan zeur ik niet meer :-)>
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!/usr/bin/perl

$dir = "/data/pdfconv";
opendir(DIR, "$dir");
my @files = readdir(DIR);
for $i (@files)
{
  if ($i =~ /.*\.prn$/)
  {
    $j = $i;
    $j = "temp.ps";
    unless (-e $j)
    {
 `mv $i $j`;
 $k = $i;
 $k =~ s/\.prn$/\.pdf/i;
 `ps2pdf12 "$j" "$k"`;
    }
  }
}

Vaag overigens dat ps2pdf problemen heeft met spaties in filenames...ik gebruik het hier toch behoorlijk vaak en heb dat nog nooit gezien. Ik weet ook niet zeker of ik wel eens een bestandsnaam met een spatie erin heb gebruikt (meestal gebruik ik underscores), maar dat zou wel erg toevallig zijn...

Leven is het meervoud van lef | In order to make an apple pie from scratch, you must first create the universe.

Pagina: 1