Tire Skrevet 28. juli 2011 Del Skrevet 28. juli 2011 Hei Kan noen forklare meg hvordan jeg kan lage et script som printer pdf automatisk ettersom det dokker opp i valgt mappe feks: c://programfiler/pdf Er dette i det hele-tatt. Har googlet litt uten å finne noen god løsning. Lenke til kommentar
conundrum Skrevet 28. juli 2011 Del Skrevet 28. juli 2011 (endret) Jada, det er mulig. Skal pdf-filene bli liggende i mappen etter at de er skrevet ut? Det er nemlig litt enklere å få dette til dersom filen kan slettes etter utskrift. Du kan lage et script som gjør noe slikt som dette: Sjekk om det er PDF-filer i mappen. Hvis ingen PDF-filer ble funnet, vent i X sekunder og gå til pkt. 1. Velg en fil, og bruk et program (f.eks. Adobe Reader) til å sende filen til en angitt skriver. Ta vare på prosess-IDen til AR. Kjører AR-prosessen fortsatt? Hvis ja, vent i X sekunder og gå til pkt. 3. Slett filen. Dersom dette ikke lar seg gjøre: Send feilmelding og stopp (for å unngå flere utskrifter av samme fil). Gå til pkt. 1 Det er et par praktiske problemer man må ta hensyn til. Det kan f.eks. ta tid fra en fil er synlig i mappen til den faktisk er ferdiglagret, og i mellomtiden vil filen være låst (og ufullstendig). Dette kan løses ved at man i pkt. 2 sjekker om filen kan låses, og går tilbake til pkt. 1 dersom dette ikke lar seg gjøre. Det kan også være hensiktsmessig å se om Adobe Reader (eller hva man nå bruker) returnerer en feilkode, og det finnes mer elegante måter å håndtere både prosessheng (pkt. 3 venter i utgangspunktet i evigheter) og låste filer (pkt. 4) enn det jeg har skissert i eksempelet. Hvis man vil gjøre dette veldig portabelt og avansert, går det an hente ut fra registeret hvilket program som er registrert for PDF-utskrift. Her er eksempler på batch-script som gjør nettopp dette. Edit: Klarte ikke å la dette ligge, nei. Her er et eksempel som bruker Foxit Reader til å skrive ut dokumenter til en angitt skriver som er delt ut fra en annen server: @echo off setlocal set pdfdir=C:\PDF set pdfprintapp=C:\Program Files (x86)\Foxit Reader\Foxit Reader.exe set pdfprintparam=-t set pdfprinter=\\prn-01\TA DCC-2625 set logfile=%windir%\TEMP\pdfprint.log :WaitForFile ping -n 5 localhost >nul dir %pdfdir%\*.pdf >nul 2>nul if errorlevel 1 goto WaitForFile for %%a in ("%pdfdir%\*.pdf") do call :PrintPDF "%%a" goto WaitForFile :PrintPDF ping -n 2 localhost >nul "%pdfprintapp%" %pdfprintparam% "%~1" "%pdfprinter%" del /f /q "%~1" if exist "%~1" goto FatalError goto end :FatalError echo Feil ved utskrift av "%~1": Noe Gikk Galt >>%logfile% :Loop goto Loop :end Dette er testet i XP og 7, men det inneholder ingen feilhåndtering utover en primitiv evig loop dersom filen ikke lar seg slette (da filen ellers ville blitt skrevet ut om og om igjen). Foxit bruker "-t"-parameteret for å angi filnavn og skriver. Adobe Reader har et tilsvarende parameter, men det har jeg ikke testet. Forslag til forbedringer: Test om filen er låst før utskrift, f.eks. ved å prøve å flytte filen til en anne mappe. Kjør Foxit i bakgrunnen med "start", gjerne via eget script m/sjekk av feilkoder, og bruk tasklist for å vente til den har avsluttet (timeout/taskkill etter et gitt antall sekunder). Generelt bedre logging, f.eks. med dato og klokkeslett. NB: Hvis du skal kjøre dette i bakgrunnen, husk å kjøre det med en konto som har tilgang til skriveren/nettverket. Endret 28. juli 2011 av conundrum Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå