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
GELÖST

String in einem Textfile auslesen

Frage Entwicklung Batch & Shell

Mitglied: BrandonQuest

BrandonQuest (Level 1) - Jetzt verbinden

04.07.2009, aktualisiert 11:03 Uhr, 3788 Aufrufe, 2 Kommentare

Moin an alle!
Da ich absolut neu (seit gestern) auf dem Gebiet bin, mutet mein Problem zwar banal an, nur sitze ich jetzt
seit einem Tag davor, habe ein paar Probleme gelöst, hänge aber definitiv an folgendem:

aus einem Ordner mit etlichen Protokoll.txt (gewandelte copy eines PDF),
werden aus jeder Datei

das eingetragene Datum,
Protokollnummer und
eine ID-Nummer

ausgelesen, um die ursprüngliche PDF-Datei danach entsprechend umzubenennen und einen Eintrag über
diesen Vorgang in einer weiteren Sammeldatei anzulegen.

Also: die Datei, mit momentan kryptischem Namen soll dann "Datum_ID.pdf" heissen,
und die Protokollnummer fortlaufend in einer weiteren Textdatei abgelegt werden.

Datum und ID habe ich nun schon herausgefunden:



01.
 
02.
@echo off & setlocal 
03.
set "Ordner=c:\TEST" 
04.
set "Typ=pdf" 
05.
cd /d "%Ordner%" 
06.
for %%f in (*.%Typ%) do call :ProcessFile "%%f" 
07.
goto :eof 
08.
 
09.
:ProcessFile 
10.
Set dateiname_alt=%~f1 
11.
Start /wait Pdftotext.exe %dateiname_alt% %dateiname_alt:~0,-4%.txt 
12.
 
13.
for /f "delims=" %%i in ('findstr /C:"Datum der Bearbeitung" %dateiname_alt:~0,-4%.txt') do @Set "ln=%%i" 
14.
 
15.
set Datum=%ln:~25,10% 
16.
 
17.
for /F "tokens=3 delims= " %%i IN ('findstr /C:"Protokollnummer Nr." %dateiname_alt:~0,-4%.txt') do @Set "ln=%%i" 
18.
 
19.
set Protokollnummer=%ln% 
20.
 

Hier wird also ein pdf-File genommen,
mit pdftotext.exe aus dem Open-Source-Project xpdf in txt gewandelt,
und danach die Spalten mit meinen Infos gesucht und
Datum und Protokollnummer von störenden Zeichen
befreit an entsprechende Variablen übergeben.

Bis hierhin waren die Infos in Zeilen, deren Anfang immer gleich lautete, und die somit leicht zu finden gewesen sind.

Die ID jedoch ist in einer eigenen Zeile und kann variieren.

Sie kommt jedoch jedoch immer zwei Zeilen nach dem Begriff "ID-No:"
und ist alleinstehend in einer Zeile.
Beispiel:

ID-Nr.:
ID-No:


WSSD-GHZUQ1-001

Typ:
Type:



Ich müsste also in der Datei suchen,bis "ID-No:" gefunden wird, und dann zwei Zeilen
weiter den Inhalt der entsprechenden Zeile bis zum Ende auslesen und in eine
Variable schreiben.

Wie ich dann den Dateinamen zusammenbastle, die PDF-Datei umbenenne, und die Protokollnummer
in eine Textdatei schreibe, wird dann wohl den Rest des Tages in Anspruch nehmen

Für etwaige Hilfe / Verbesserungsvorschläge bin ich zutiefst dankbar!

Beste Grüße
Brandon
Mitglied: bastla
04.07.2009 um 12:14 Uhr
Hallo BrandonQuest und willkommen im Forum!

Die entsprechende Sequenz könnte so aussehen:
01.
::Pfad der Textdatei ermitteln und speichern 
02.
set "dateiname_neu=%~dpn1.txt" 
03.
 
04.
::alten Wert von %Zeile% entfernen 
05.
set "Zeile=" 
06.
for /f "delims=:" %%i in ('findstr /n /c:"ID-No:" "%dateiname_neu%"') do set "Zeile=%%i" 
07.
::alten Inhalt von %ID% loeschen 
08.
set "ID=" 
09.
::Falls Zeile mit "ID-No." gefunden wurde, uebernacheste Zeile auslesen 
10.
::(dazu alles bis zur naechsten Zeile ueberspringen und nur die dann erste Zeile verwenden). 
11.
if defined Zeile ( 
12.
    set /a Zeile+=1 
13.
    for /f "usebackq skip=%Zeile%" %%i in ("%dateiname_neu%") do if not defined ID set "ID=%%i" 
14.
15.
::Falls keine ID gefunden wurde, Bearbeitung (dieser Datei) abbrechen 
16.
if not defined ID echo "Keine ID gefunden" & goto :eof
Anmerkung: Da der Pfad der Textdatei öfter benötigt wird, bietet es sich an, diesen in einer Variablen (%dateiname_neu%) festzuhalten, wobei die in Zeile 2 dargestellte Schreibweise etwas flexibler ist - konkret: Verwende alle Bestandteile des Pfades bis auf den letzten Punkt und den Teil dahinter (= .Dateityp; siehe dazu "for /?" gegen Ende).

Grüße
bastla
Bitte warten ..
Mitglied: BrandonQuest
04.07.2009 um 13:15 Uhr
Vielen Dank, bastla!

Ich bin erst in einigen Stunden wieder da und werde es dann gleich verdauen, ausprobieren und rückmelden!

Gruß
Brandon
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
2 String aus PDF auslesen und diesen zum Umbenamsen benutzen (8)

Frage von ingo101 zum Thema Batch & Shell ...

VB for Applications
gelöst Bestimmte Spalten aus CSV-Datei auslesen (VBS) (9)

Frage von Gurkenhobel zum Thema VB for Applications ...

Batch & Shell
Eventlog Druckjobs mit VBS auslesen (2)

Frage von joni2000de zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Tools
gelöst Aussendienst Datensynchronisierung (12)

Frage von lighningcrow zum Thema Windows Tools ...

Windows Server
Suche passender Treiber (12)

Frage von stolli zum Thema Windows Server ...

Peripheriegeräte
Wlan stört Funkmaus (11)

Frage von Falaffel zum Thema Peripheriegeräte ...

Peripheriegeräte
gelöst USB Festplatte verliert Laufwerksbuchstabe (9)

Frage von cese4321 zum Thema Peripheriegeräte ...