clausjan
Goto Top

Bestimmte Informationen aus einer Datei auslesen und mit der Information eine andere Datei umbenennen

Hallo "Zusammen"

Erstmal will ich hier sagen das dieses Forum wirklich sehr Informativ ist und auch sehr übersichtlich. Ich bin auf das Forum gekommen weil ich ein Problem habe das ich so nicht allein Lösen kann.

Ich habe eine Datei die Info.txt heist so aufgebaut ist:

DOCTYPE FAX
ARCHIVID AG
CLIENT 800
DESTINATION AG01
TYPE AKTT
DOC_TYPE DDEE990400
OBJ_ID 999999999888888888
COMPA 9.gg image/tiff 9.gg

Jetzt soll nur die "OBJ_ID" ausgelesen werden also diese Nummer 999999999888888888 ( die sich aber auch mit jeder neuen Datei ändert ). Mit Dieser Information soll dann die 9.gg die auch in dem Verzeichnissordner liegt
umgeändert werden in 999999999888888888.tif

Damit das auch noch ein wenig mehr Spaß macht gibt es ein Verzeichniss das so aufgebaut ist d:\Import\123456\123
d:\Import\123456\124
d:\Import\123456\125 und so weiter

und so weiter wo immer eine andere Info.txt besteht mit dementsprechenden Informationen ( OBJ_ID )
also wäre es sehr gut wenn es da eine "Schleife" gibt die oben in Verzeichniss Anfängt und das Verzeichniss abarbeitet. Wenn er die Info.txt abgearbeitet hat dann sollte wenn möglich ein Kontrolllauf erfolgen, also ein Check ob er aus der
OBJ_ID Nummer eine Datei mit der ID Nummer erstellt hat und anschliessend die Info.txt als Log umbenennen oder ein Fehler ausweisen.

So jetzt hoffe ich das die Informationen in Ordnung sind und freu mich wenn Ihr mir da Helfen könntet weil mich das jetzt schon seit Tagen fuchst.

LG
Claus

Content-ID: 106114

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

Ausgedruckt am: 26.11.2024 um 18:11 Uhr

beckslevel91
beckslevel91 15.01.2009 um 15:31:56 Uhr
Goto Top
Hey,

Frage: Soll die OBJ_ID nach belieben oder Zeitgesteuert ausgelesen werden??

Wenn es mit Batch-Befehlen nicht geht, könntest du es mit Linux Debian versuchen... weiß aber nicht genau wie das geht.

Gruß,

J.R.
ClausJan
ClausJan 16.01.2009 um 08:12:49 Uhr
Goto Top
Hallo

Danke aber mit Linux kann ich das nicht machen. Danke
bastla
bastla 30.01.2009 um 21:43:37 Uhr
Goto Top
Hallo ClausJan!

Etwas zum Testen:
@echo off & setlocal
set "Basis=D:\import\123456"  
set "Datei=info.txt"  
set "Neu=info.log"  
set "Log=D:\Fehler.txt"  

if exist "%Log%" del "%Log%"  
for /d %%i in ("%Basis%\???") do call :ProcessDir "%%i"  
if exist "%Log%" notepad "%Log%"  
goto :eof

:ProcessDir
pushd %1
if not exist "%Datei%" (>>"%Log%" echo %~nx1: Datei "%Datei%" fehlt & goto :Ende)  

set OBJID=
for /f "tokens=2" %%a in ('findstr /b "OBJ_ID" "%Datei%" 2^>nul') do set "OBJID=%%a"  
if not defined OBJID (>>"%Log%" echo %~nx1: Zeile OBJ_ID fehlt & goto :Ende)  

set COMPA=
for /f "tokens=2" %%a in ('findstr /b "COMPA" "%Datei%" 2^>nul') do set "COMPA=%%a"  
if not defined COMPA (>>"%Log%" echo %~nx1: Zeile COMPA fehlt & goto :Ende)  

if not exist "%COMPA%" (>>"%Log%" echo %~nx1: Datei "%COMPA%" fehlt & goto :Ende)  

move "%COMPA%" "%OBJID%.tif"  
if errorlevel 1 (
    >>"%Log%" echo %~nx1: Datei "%COMPA%" konnte nicht auf "%OBJID%.tif" umbenannt werden!  
) else (
    move "%Datei%" "%Neu%" || >>"%Log%" echo %~nx1: Datei "%Datei%" konnte nicht auf "%Neu%" umbenannt werden!  
)

:Ende
popd
goto :eof
Ein Kontrolllauf ist an sich nicht erforderlich, da die entsprechenden Checks schon während der Bearbeitung durchgeführt werden.

Noch eine Anmerkung: In Zeile 8 wird das Suchmuster für die Unterordner mit
"%Basis%\???"
festgelegt, wobei "???" für "123", "124", "125" etc steht - falls der Name des Unterordners aus einer anderen (als 3) Zeichenanzahl bestehen sollte, muss dieses Muster angepasst werden; sollen allerdings ohnehin alle Unterorder des Basispfades bearbeitet werden, wäre "???" durch "*.*" zu ersetzen.

Grüße
bastla
ClausJan
ClausJan 02.02.2009 um 08:57:25 Uhr
Goto Top
Hallo bastla

So weit Danke für das Script, ich habe nun "getestet" grins und leider ist da noch ein kleiner Fehler

Es kommt diese Fehlermeldung:

back: Datei "1.pg" fehlt
in der Info Datei steht zum schluss "COMP 1.pg image/tiff 1.pg" die 1.pg steht im selben verzeichniss wie die info.txt

Auch das Script läuft nur wenn ich die "Basis" nur das ganze Verzeichniss angebe.

Ich hoffe Du kannst mir nochmal Helfen.

LG Claus
ClausJan
ClausJan 02.02.2009 um 12:45:45 Uhr
Goto Top
Hallo Bastla

Ich hab das jetzt soweit hin bekommen, aber ich habe noch ein weiteres Problem. Ich melde mich nochmal bei Dir. OK

LG Claus
ClausJan
ClausJan 02.02.2009 um 18:36:33 Uhr
Goto Top
Hallo Bastla

Also Dein Script geht, ich habe es noch ein wenig für mich angepasst.

Nun ist es so das ich noch eine Steuer Datei benütige mit verschiedene Informationen:

Die Datei soll in dem jeweiligen Verzeichniss erstellt werden und soll den Namen von der OBJ_ID haben.

Also 999999999888888888.open

Der Inhalt der Datei soll so ausschauen:

OBJ_ID;ARCHIVID;DOCTYPE

Ich dachte mir man kann die INformationen aus der Info.Log netnehmen. Wäre ne nette Sache wenn Du mir da nochmal Helfen könntest.

LG Claus
bastla
bastla 02.02.2009 um 18:49:26 Uhr
Goto Top
Hallo ClausJan!

Sollte sich in den obigen Batch integrieren lassen - einfach vor Zeile 33 (":Ende") platzieren:
set DOCTYPE=
for /f "tokens=2" %%a in ('findstr /b "DOCTYPE" "%Datei%" 2^>nul') do set "DOCTYPE=%%a"  
if not defined DOCTYPE (>>"%Log%" echo %~nx1: Zeile DOCTYPE fehlt & goto :Ende)  

set ARCHIVID =
for /f "tokens=2" %%a in ('findstr /b "ARCHIVID" "%Datei%" 2^>nul') do set "ARCHIVID=%%a"  
if not defined ARCHIVID (>>"%Log%" echo %~nx1: Zeile ARCHIVID fehlt & goto :Ende)  

>%OBJ_ID%.open echo %OBJ_ID%;%ARCHIVID%;%DOCTYPE%
Grüße
bastla
ClausJan
ClausJan 03.02.2009 um 09:38:23 Uhr
Goto Top
Hallo bastla

Leider geht das bei mir nicht so ich bekomme ein DOCTYPE fehler. Das ist bestimmt nur ne Kleinigkeit aber ich komm nicht drauf.

LG Claus
bastla
bastla 03.02.2009 um 10:17:56 Uhr
Goto Top
Hallo ClausJan!
ich bekomme ein DOCTYPE fehler.
Welche Art von Fehler?

Grüße
bastla
ClausJan
ClausJan 03.02.2009 um 17:51:08 Uhr
Goto Top
Hallo

In der Log Datei steht nur DOCTYPE nicht gefunden. Ich habe das Script in eine neue Batch gesetzt und angepasst das läuft, aber wenn ich es vor dem Ende setze dann geht das nicht. Ich vermute das er die Commands nicht mehr findet und dadurch auch die DOCTYPE von der Datei nicht mehr auslesen kann.

Ich habe da noch eine Frage: Wie kann ich denn 2 Batch dateien so verknüpfen das die nacheinander ablaufen.

LG Claus
bastla
bastla 03.02.2009 um 18:41:19 Uhr
Goto Top
Hallo ClausJan!

Sorry - die angegebene Position ist natürlich Unsinn face-sad, wenn in Zeile 26 die Datei, aus der die Daten kommen sollen, bereits verschoben wird - daher nach Zeile 18 und vor Zeile 26 einfügen.
Wie kann ich denn 2 Batch dateien so verknüpfen das die nacheinander ablaufen.
Einfach den Pfad des zweiten Batches als letzten Befehl des ersten Batches eintragen - oben wäre dies (falls es noch nötig sein sollte) als neue Zeile 10.

Grüße
bastla
ClausJan
ClausJan 04.02.2009 um 14:16:31 Uhr
Goto Top
Hallo Bastla

Also jetzt habe ich das Script soweit das es "geht" ich sage ganz doll Danke an Dich und alle die hier mit geholfen haben.
Ich freu mich das das so geklapt hat und hoffe mal ein Stein zurückwerfen zu können.

LG Claus

PS: Soll ich das ferige Script hier mal abbilden für andere????
bastla
bastla 04.02.2009 um 16:54:02 Uhr
Goto Top
Hallo ClausJan!

Freut micht, dass es geklappt hat - und das Ergebnis kann sich doch sicherlich sehen lassen (besonders, wenn Du es als darstellst face-wink) ...

Grüße
bastla