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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 106114
Url: https://administrator.de/contentid/106114
Ausgedruckt am: 26.11.2024 um 18:11 Uhr
13 Kommentare
Neuester Kommentar
Hallo ClausJan!
Etwas zum Testen:
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
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
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
Noch eine Anmerkung: In Zeile 8 wird das Suchmuster für die Unterordner mit
"%Basis%\???"
Grüße
bastla
Hallo ClausJan!
Sollte sich in den obigen Batch integrieren lassen - einfach vor Zeile 33 (":Ende") platzieren:
Grüße
bastla
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%
bastla
Hallo ClausJan!
Sorry - die angegebene Position ist natürlich Unsinn , 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.
Grüße
bastla
Sorry - die angegebene Position ist natürlich Unsinn , 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