Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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, 2712 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 ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Batch & Shell
gelöst Powershell - Dateien aus verschiedenen Arrays - Attribute vergleichen (5)

Frage von Giffas zum Thema Batch & Shell ...

VB for Applications
VBS Script zum versenden mehrerer Verknüpfungen zu Dateien per Lotus Notes

Frage von Sentinel87 zum Thema VB for Applications ...

Windows Server
Server sehr langsam bei vielen kleinen Dateien (5)

Frage von MichiBLNN zum Thema Windows Server ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (17)

Frage von JayyyH zum Thema Switche und Hubs ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Microsoft Office
Keine Updates für Office 2016 (11)

Frage von Motte990 zum Thema Microsoft Office ...