Attribute aus mehrern Dateien zusammenfassen
Hallo Admins,
hab hier ein glaube ich komplexere Problem und weiß eigentlich nicht ob sich das durch Batchskripting realisieren lässt.
Ich habe eine Datei mit 3 Spalten durch Kommas getrennt mit folgenden Inhalt:
Anhand der Information des 3. Tokens suche ich die Datei innerhalb eines Ordners.
Also erhalte ich folgenden Output:
Der Output ist richtig so, er findet mir zu jeder doc auch eine ini.
Jetzt die Problematik:
In der ini sind Informationen, die ich auch im Output integrieren will.
Ich möchte nun aus der gefundenen ini die Zeile 3 und 19 auslesen und ins Output integrieren.
Die ini sieht folgendermaßen aus:
Somit möchte ich folgenden Output erhalten:
Wie mache ich das?
Danke schonmal im voraus!
hab hier ein glaube ich komplexere Problem und weiß eigentlich nicht ob sich das durch Batchskripting realisieren lässt.
Ich habe eine Datei mit 3 Spalten durch Kommas getrennt mit folgenden Inhalt:
12345,blabla,A12345
27989,testte,A66209
27989,testte,A66209
Anhand der Information des 3. Tokens suche ich die Datei innerhalb eines Ordners.
for /f "tokens=1-3 delims=," %%a in (meinedatei.txt) do (
call :searchexist %%a %%b %%c
)
goto L_END
:searchexist
for /R C:\test\ %%a in (%3.*) do (
echo %1,%2,%3,%%~fa>>found.log
Also erhalte ich folgenden Output:
12345,blabla,A12345,c:\test\A12345.doc
12345,blabla,A12345,c:\test\A12345.ini
27989,testte,A66209,c:\test\A66209.doc
27989,testte,A66209,c:\test\A66209.ini
12345,blabla,A12345,c:\test\A12345.ini
27989,testte,A66209,c:\test\A66209.doc
27989,testte,A66209,c:\test\A66209.ini
Der Output ist richtig so, er findet mir zu jeder doc auch eine ini.
Jetzt die Problematik:
In der ini sind Informationen, die ich auch im Output integrieren will.
Ich möchte nun aus der gefundenen ini die Zeile 3 und 19 auslesen und ins Output integrieren.
Die ini sieht folgendermaßen aus:
...
Date=20.12.1980
...
ProjectNo=06nk11924
...
Date=20.12.1980
...
ProjectNo=06nk11924
...
Somit möchte ich folgenden Output erhalten:
12345,blabla,A12345,20.12.1980,06nk11924,c:\test\A12345.doc
12345,blabla,A12345,20.12.1980,06nk11924,c:\test\A12345.ini
27989,testte,A66209,11.10.2005,0z663451w,c:\test\A66209.doc
27989,testte,A66209,11.10.2005,0z663451w,c:\test\A66209.ini
12345,blabla,A12345,20.12.1980,06nk11924,c:\test\A12345.ini
27989,testte,A66209,11.10.2005,0z663451w,c:\test\A66209.doc
27989,testte,A66209,11.10.2005,0z663451w,c:\test\A66209.ini
Wie mache ich das?
Danke schonmal im voraus!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 97667
Url: https://administrator.de/forum/attribute-aus-mehrern-dateien-zusammenfassen-97667.html
Ausgedruckt am: 23.12.2024 um 10:12 Uhr
4 Kommentare
Neuester Kommentar
Hallo rübensau!
(Ungetestet) etwa so:
Vorausgesetzt wird hier, dass die entsprechenden Zeilen tatsächlich mit (exakt) "Date=" bzw "ProjectNo=" beginnen und es jeweils nur eine derartige Zeile gibt (bei mehreren Zeilen würdest du die Daten aus der letzten gefundenen Zeile erhalten).
Mit dem "findstr"-Schalter "/i" könntest Du noch vorgeben, dass bei der Suche Groß-/Kleinschreibung nicht unterschieden werden soll.
Grüße
bastla
(Ungetestet) etwa so:
@echo off & setlocal
for /f "tokens=1-3 delims=," %%a in (meinedatei.txt) do (
for /R C:\test\ %%f in (%%c.*) do (
call :GetInfoAndWrite %%a %%b %%c "%%f"
)
goto L_END
:GetInfoAndWrite
set Datum=
for /f "tokens=1* delims=" %%i in ('findstr /b "Date=" %4') do set "Datum=%%j"
set Project=
for /f "tokens=1* delims=" %%i in ('findstr /b "ProjectNo=" %4') do set "Project=%%j"
echo %1,%2,%3,%Datum%,%Project%,%~f4>>found.log
goto :eof
Mit dem "findstr"-Schalter "/i" könntest Du noch vorgeben, dass bei der Suche Groß-/Kleinschreibung nicht unterschieden werden soll.
Grüße
bastla
Hallo rübensau!
Nur als Anmerkung: Soferne Du für "found.log" nicht auch noch eine andere Verwendung hast, ist dieser Zwischenschritt eigentlich unnötig - Du könntest anstelle des "echo" in Zeile 13 gleich ein "call :SearchInFile" verwenden ...
Und noch eine Kleinigkeit: Wenn der Suchbegriff aus einem einzigen Wort besteht, ist der "findstr"-Schalter "/c" eigentlich entbehrlich.
Grüße
bastla
Nur als Anmerkung: Soferne Du für "found.log" nicht auch noch eine andere Verwendung hast, ist dieser Zwischenschritt eigentlich unnötig - Du könntest anstelle des "echo" in Zeile 13 gleich ein "call :SearchInFile" verwenden ...
Und noch eine Kleinigkeit: Wenn der Suchbegriff aus einem einzigen Wort besteht, ist der "findstr"-Schalter "/c" eigentlich entbehrlich.
Grüße
bastla