jeg vil gerne lave et lille batchs script der kan løbe alle filer igennem og køre et lille program på en bestemt type filer.
Problemet er jeg skal have konverteret en pokkers masse .eps filer til .pdf filer vha et program der hedder "epstopdf". Men jeg har rigtig mange filer! Hvis det kan gøres rekursivt ville det også være dejligt.
I pseudo koder ville det se nogenlunde sådan ud:
while(list all dirs and sub-dirs){ currentFile = file if(type(currentFile)==eps)then epstopdf currentFile end if end while
Et alternativ var at lave et lille util der genererer en bat fil (f.eks. i c/c++). Altså, som løber rekursivt gennem strukturen og outputter en bat fil.
Det er ikke det store problem at skrive alle direktorierne, så mange er der heller ikke. Så hvis der bare kan skrive et lille et, hvor jeg måske giver direktoriet som argument, så ville det være fint!
Hmm, ja nu bliver jeg jo krævende, for nu vil jeg gerne udvide!
Nu skal den kunne køre et program, hvis det er en .eps fil og et andet, hvis det er en jpg! + den skal lave efternavnet om.... Er det noget en eller anden (bertelbrander??) kan hjælpe med?
dvs noget i stil med følgende: if(*.jpg || *.jpeg) do @jpeg2ps %I > %I &".eps" elseif(*.eps) do @epstopdf %I
Du kan putte følgende i en bat-fil. Det vil køre igennem alle filer og checke deres extension, hvilket sker i "funktionen" :do_it I :do_it er %1 extension (inklusive .) %2 er hele fil-navnet og %3 er filnavnet uden extension. Du skal rette scriptet så det udfører de kommandoer du vil have udført for de enkelte extensions. Du kan slette den sidste linie hvis du ikke ønsker at se output for alle ukendte extensions. Hvis du vil have kørt epstopdf for alle .eps filer og have udskrevet filnavnet kan du skrive: if /I {%1}=={.eps} echo eps-file %2 & epstopdf & goto :eof Jeg er ikke sikker på hvordan det er du vil have kommando linien for .jpg filer til at se ud, men hvis du vil have følgende kommando udført for test.jpg: jpeg2ps test.jpg > test.eps Skiver du: if /I {%1}=={.jpg} echo jpg-file: %2 %3 & jpeg2ps %2 >%3.eps goto :eof
@echo off for /R %%I in (*) do call :do_it %%~xI %%I %%~dpnI goto :eof
Det virker jo vildt fedt! Tak for det! Du har virkelig sparet mig for mange timers arbejde og mange fejl!
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.