Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Attribute aus mehrern Dateien zusammenfassen

Frage Entwicklung Batch & Shell

Mitglied: ruebensau

ruebensau (Level 1) - Jetzt verbinden

24.09.2008, aktualisiert 16:23 Uhr, 2729 Aufrufe, 4 Kommentare

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:


12345,blabla,A12345
27989,testte,A66209
.....


Anhand der Information des 3. Tokens suche ich die Datei innerhalb eines Ordners.
01.
for /f "tokens=1-3 delims=," %%a in (meinedatei.txt) do ( 
02.
	call :searchexist %%a %%b %%c  
03.
04.
 
05.
goto L_END 
06.
 
07.
:searchexist 
08.
for /R C:\test\ %%a in (%3.*) do ( 
09.
	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


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
...

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

Wie mache ich das?
Danke schonmal im voraus!
Mitglied: Iwan
24.09.2008 um 08:32 Uhr
hallo,

ich kann dir leider nicht helfen, aber du solltest dir mal die Formatierungshilfe angucken und dann deinen Beitrag nochmal bearbeiten
das macht das ganze wesentlich leichter zu lesen
Bitte warten ..
Mitglied: bastla
24.09.2008 um 10:53 Uhr
Hallo rübensau!

(Ungetestet) etwa so:
01.
@echo off & setlocal 
02.
for /f "tokens=1-3 delims=," %%a in (meinedatei.txt) do ( 
03.
    for /R C:\test\ %%f in (%%c.*) do ( 
04.
	    call :GetInfoAndWrite %%a %%b %%c "%%f" 
05.
06.
 
07.
goto L_END 
08.
 
09.
:GetInfoAndWrite 
10.
set Datum= 
11.
for /f "tokens=1* delims=" %%i in ('findstr /b "Date=" %4') do set "Datum=%%j" 
12.
set Project= 
13.
for /f "tokens=1* delims=" %%i in ('findstr /b "ProjectNo=" %4') do set "Project=%%j" 
14.
echo %1,%2,%3,%Datum%,%Project%,%~f4>>found.log 
15.
goto :eof
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
Bitte warten ..
Mitglied: ruebensau
24.09.2008 um 15:43 Uhr
Hab den Code ein wenig umgestellt und funktioniert jetzt auch. Vorher hatte ich irgendwie noch Endlosschleifen und mit Variablenproblemen zu kämpfen.
Thx bastla

01.
setlocal enabledelayedexpansion 
02.
 
03.
rem mawk.exe -F; -f identic.awk importvorlage_ver2.csv>identic.log 
04.
 
05.
for /f "tokens=1-3 delims=;" %%a in (identic.log) do ( 
06.
	call :searchexist %%a %%b "%%c" 
07.
08.
 
09.
goto L_END 
10.
 
11.
:searchexist 
12.
for /R F:\ULDokumente_Chicago\QRS_certificates %%a in (%1.*) do ( 
13.
	echo %1;%2;%3;%%~fa;%%~dpa;%%~na>>found.log 
14.
15.
goto :EOF 
16.
 
17.
:L_END 
18.
 
19.
for /f "tokens=1-6 delims=;" %%a in (found.log) do ( 
20.
	call :SearchInFile %%a %%b %%c %%d %%e %%f 
21.
22.
 
23.
goto L_END1 
24.
 
25.
:SearchInFile 
26.
set Vol= 
27.
for /f "tokens=2 delims==" %%i in ('findstr /B /C:"Volume" %4') do (set "Vol=%%i") 
28.
set Project= 
29.
for /f "tokens=2 delims==" %%i in ('findstr /B /C:"ProjectNo" %4') do (set "Project=%%i") 
30.
echo %1;%2;%3;%Vol%;%Project%;%4>>test.log 
31.
if exist %5C%6.doc echo %1;%2;%3;%Vol%;%Project%;%5C%6.doc>>test.log 
32.
goto :EOF 
33.
 
34.
:L_END1
werde noch ein wenig rumbasteln müssen, daher markiere ich den Beitrag erstmal noch nicht auf gelöst.
Bitte warten ..
Mitglied: bastla
24.09.2008 um 16:23 Uhr
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
Bitte warten ..
Ähnliche Inhalte
VB for Applications
VBA Excel Dateien zusammenfassen (3)

Frage von cberndt zum Thema VB for Applications ...

VB for Applications
Excel: Makro soll mehrer Dateien auslesen und in einer neuen Datei zusammenfassen (12)

Frage von Michelle1995 zum Thema VB for Applications ...

Exchange Server
MS Exchange Attribute anzeigen (2)

Frage von Xaero1982 zum Thema Exchange Server ...

VB for Applications
gelöst Tabellenblätter zusammenfassen und Kennzeichnen (7)

Frage von 132183 zum Thema VB for Applications ...

Neue Wissensbeiträge
Multimedia

Raspberry Pi als Digital-Signage-Computer

(1)

Information von BassFishFox zum Thema Multimedia ...

Windows Update

Novemberpatches und Nadeldrucker bereiten Kopfschmerzen

(15)

Tipp von MettGurke zum Thema Windows Update ...

Windows 10

Abhilfe für Abstürze von CDPUsersvc auf Win10 1607 und 2016 1607

(7)

Tipp von DerWoWusste zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Router & Routing
Freigabe aus anderem Netz nicht erreichbar (31)

Frage von McLion zum Thema Router & Routing ...

Visual Studio
Vb.net-Tool zum Erzeugen einer Outlook-E-Mail (24)

Frage von ahstax zum Thema Visual Studio ...

Batch & Shell
Batch Programm verhalten bei shoutdown -p (19)

Frage von Michael-ITler zum Thema Batch & Shell ...

Festplatten, SSD, Raid
gelöst Raidcontroller funktioniert nur, wenn unter Legacy-Boot gestartet wird (14)

Frage von DerWoWusste zum Thema Festplatten, SSD, Raid ...