zilla99
Goto Top

Batch liest Informationen aus TXT und verarbeitet sie weiter

Hallo Freunde,

Ich habe folgendes problem

Ich habe einen Stapel Papier, dieser gehört eingescannt und an ca 60 leute gemailt.

Der Stapel hat ung. 20 Kategorien und nicht jeder bekommt alles, also muss für jeden Sortiert werden und das dauert natürlich sehr lange.

Da ich in dieser Zeit den Kopierer/Scanner belege kann niemand an dem Gerät arbeiten also habe ich mir folgendes überlegt.

Nachdem ich jede Kategorie einzeln eingescannt habe und sie als, 1.pdf, 2.pdf, 3.pdf gespeichert habe, muss ich aus diesen pdf ein ganzes machen dies mach ich mit Gswin32

GhostScript/Freepdf

Danach Versende ich mit Blat / Mail programm

Die Kategorien werden eingescannt:

-Ordner Struktur-

\SCAN\SCAN
1.pdf 2.pdf 3.pdf etc...

\SCAN\SEND
Empfänger1
Empfänger2
Empfänger3
Empfänger4

SCAN\BATCH
Pdfconvert.bat

---> Pdfconvert.bat

@echo off
C:\Scan\GSWIN\gswin32 -dNOPAUSE -sDEVICE=pdfwrite -sOUTPUTFILE=C:\Scan\SEND\Empfänger1\Example.pdf

-dBATCH C:/Scan/SCAN/1.pdf

Ich hab mir überlegt wenn man anstatt
-sOUTPUTFILE=C:\Scan\SEND\ "Empfänger1" \Example.pdf

Eine Variable einfügt, die ihm sagt nimm als erstes Empfänger1 dann Empfänger2 etc

und bei

-dBATCH C:/Scan/SCAN/1.pdf C:/Scan/SCAN/2.pdf C:/Scan/SCAN/3.pdf

anstatt C:/Scan/SCAN/1.pdf C:/Scan/SCAN/2.pdf C:/Scan/SCAN/3.pdf

auch eine Variable setzt die er sich ausliest z.b aus dem Ordner

C:\Scan\SEND\Empfänger1\Variable.txt

und in der Variable steht drin.

C:/Scan/SCAN/1.pdf C:/Scan/SCAN/5.pdf C:/Scan/SCAN/6.pdf C:/Scan/SCAN/10.pdf C:/Scan/SCAN/22.pdf

Ich weis leider nicht wie ich das Trennen kann
C:/Scan/SCAN/1.pdf 2.pdf 3.pdf geht nicht, aber ist sicher machbar

so

also ich will im eigentlichen sinne, das dass script sich den Pfad aus dem es die Pdf´s holen soll aus einer txt bezieht,
und Den pfad in dem er die zusammengefügten Pdf´s ablegen soll aus einer TXT zieht.

Dann stell ich mir vor die Txt mit einer art

HTML frontend zu bearbeiten wo ich mir kästchen reinbaue und ich anklicken kann ob Empfänger1 z.b 1.pdf 2.pdf oder 1.pdf 5.pdf bekommen soll


Phew ich hoff ich mach hier nicht allzuviel schwachsinn

würde halt richtig fix gehn wenn das alles läuft

Ich hoffe mir kann jemand erklären wie das alles mit den Variablen und so funktioniert, ich will ja nicht das hier jemand einganzes script schreibt sondern ich will das verstehen



Merci !

Content-Key: 83410

Url: https://administrator.de/contentid/83410

Printed on: April 19, 2024 at 22:04 o'clock

Member: miniversum
miniversum Mar 18, 2008 at 17:19:56 (UTC)
Goto Top
Also vom Prinzipiellen ist das kein Problem.
Fangen wir mal so an.
Die jetzige Batch sieht so aus:
@echo off
C:\Scan\GSWIN\gswin32 -dNOPAUSE -sDEVICE=pdfwrite -sOUTPUTFILE=C:\Scan\SEND\Empfänger1\Example.pdf -dBATCH C:/Scan/SCAN/1.pdf

Dann müßte man erst mal die Möglichen empfänger aus dem Verzeichnis auslesen, also anhand der Ordnernamen.
Das ginge so:
FOR /F "delims=" %%E in ('dir /b /a-d C:\SCAN\SEND') do echo %%E
damit kannst du dann die Dateien auslesen die beinhalten welche Blätter die einzelnen Empfänger bekommen sollen:
FOR /F "delims=" %%F in ('type C:\Scan\SEND\%%E\Variable.txt') do echo %%F
und diese dann zu einer Variabeln zusammensetzen die eben diese Reihenfolge enthält:
C:/Scan/SCAN/1.pdf C:/Scan/SCAN/5.pdf C:/Scan/SCAN/6.pdf C:/Scan/SCAN/10.pdf C:/Scan/SCAN/22.pdf
Das geht dan mit:
set "Dateien=%Dateien% C:/Scan/SCAN/%%F
Alles in einander verschachtelt sieht das ganze dan so aus:

@echo off
FOR /F "delims=" %%E in ('dir /b /a-d C:\SCAN\SEND') do (
echo Empfänger %%E wird vorbereitet
FOR /F "delims=" %%F in ('type C:\Scan\SEND\%%E\Dateien.txt') do set "Dateien=Dateien C:/Scan/SCAN/%%F
C:\Scan\GSWIN\gswin32 -dNOPAUSE -sDEVICE=pdfwrite -sOUTPUTFILE=C:\Scan\SEND\%%E\Example.pdf -dBATCH %Dateien%
)

Ist jetzt halt alles ungetestet geschrieben, also bitte etst testen obs so geht wie du willst!
Wenn du blat noch dazunehmen willst kanst du das einfach vor der letzten Klammer einfügen.

Die Dateien.txt mit der Liste der Blätter für jeden Benutzer müßte dann so aussehen:
1.pdf
5.pdf
6.pdf
10.pdf
22.pdf
Und die Ordner mit den entsprechenden Empfängernamen müsten auch angelegt werden.
Willst du die lieber aus einer Datei lesen udn erstellen lassen dan ersetzte die Zeile :
FOR /F "delims=" %%E in ('dir /b /a-d C:\SCAN\SEND') do (
durch diese:
FOR /F "delims=" %%E in ('type C:\SCAN\SEND\Empf.txt') do (
md C:\SCAN\SEND\%%E

miniversum
Member: Zilla99
Zilla99 Mar 19, 2008 at 09:12:08 (UTC)
Goto Top
Hi oh ich teste das nacher ^^

ich habe im moment das so geregelt

@echo off

for /f "delims=" %%i in ('findstr /b "C:/" "PDF.txt"') do set "PDF=%%i"  

C:\Scan\GSWIN\gswin32 -dNOPAUSE -sDEVICE=pdfwrite -sOUTPUTFILE=C:\Scan\SEND\Complete\Extract.pdf -dBATCH %PDF%

in der PDF.txt steht halt dann

C:/Scan/SCAN/1.pdf C:/Scan/SCAN/2.pdf etc drin,