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

Stringsuche in txt und vorherige Zeile extrahieren

Frage Entwicklung Batch & Shell

Mitglied: DMaaan

DMaaan (Level 1) - Jetzt verbinden

07.07.2009, aktualisiert 21:35 Uhr, 4189 Aufrufe, 2 Kommentare

Hallo miteinander,

da ich hier schon sehr viele kompetente Hilfsbeiträge gelesen habe hoffe ich, dass es auch für mein Problem eine Lösung gibt :

Ich möchte eine Textdatei nach einem bestimmten String durchsuchen, der String hat immer die Form "Buchstabe:", also z.B.

J:

Es geht darum, dass ich mit dem Befehlt mountvol die verschiedenen Datenträger aufliste, die Liste nach dem gewünschten Buchstaben durchsuche
und bei einem Treffer einen Teil der vorherigen Zeile in einen String speichere.

Inhalt meiner Textdatei:

Erstellt, l”scht oder listet einen Volumebereitstellungspunkt auf.

MOUNTVOL [Laufwerk:]Pfad Volumename
MOUNTVOL [Laufwerk:]Pfad /D
MOUNTVOL [Laufwerk:]Pfad /L
MOUNTVOL [Laufwerk:]Pfad /P
MOUNTVOL /R
MOUNTVOL /N
MOUNTVOL /E

Pfad Gibt das (bereits vorhandene) NTFS-Verzeichnis an, auf dem der
Bereitstellungspunkt eingerichtet werden soll.
Volumename Gibt den Namen des bereitzustellenden Volumes an.
/D L”scht den Bereitstellungspunkt vom angegebenen Verzeichnis.
/L Zeigt den Namen des bereitgestellten Volumes fr das
angegebene Verzeichnis an.
/P Entfernt den Volumebereitstellungspunkt vom angegebenen
Verzeichnis, entfernt die Volumebereitstellung und setzt das
Volume nicht mehr bereitstellbar.
Sie k”nnen das Volume wieder bereitstellbar machen, indem Sie
einen Volumebereitstellungspunkt erstellen
/R Entfernt Verzeichnisse fr Volumebereitstellungspunkte und
Registrierungseinstellungen fr Volumes d. im System nicht mehr
existieren.
/N Deaktiviert das automatische Bereitstellen neuer Volumes.
/E Aktiviert das automatische Bereitstellen neuer Volumes wieder.

M”gliche Werte fr VolumeName mit aktuellen Bereitstellungspunkten:

\\?\Volume{341e1d61-594d-11de-b993-806e6f6e6963}\
* KEINE BEREITSTELLUNGSPUNKTE *

\\?\Volume{341e1d5f-594d-11de-b993-806e6f6e6963}\
* KEINE BEREITSTELLUNGSPUNKTE *

\\?\Volume{341e1d71-594d-11de-b993-806e6f6e6963}\
G:\

\\?\Volume{7c93c6f3-5bef-11de-88c5-001d605cbed4}\
I:\

\\?\Volume{341e1d60-594d-11de-b993-806e6f6e6963}\
C:\

\\?\Volume{69871728-67e8-11de-9dbe-001d605cbed4}\
J:\

\\?\Volume{341e1d72-594d-11de-b993-806e6f6e6963}\
H:\

\\?\Volume{8f903bfb-67c2-11de-b33e-001d605cbed4}\
D:\

\\?\Volume{9b457b0d-6750-11de-8f3a-001d605cbed4}\
Das System kann die angegebene Datei nicht finden.
\\?\Volume{341e1d66-594d-11de-b993-806e6f6e6963}\
A:\

\\?\Volume{341e1d64-594d-11de-b993-806e6f6e6963}\
E:\

\\?\Volume{341e1d65-594d-11de-b993-806e6f6e6963}\
F:\


Die Variable mit dem Buchstaben, die übergeben wird, heißt %ED%. Eine besonderheit hierbei muss noch sein,
dass nach dem Buchstaben VOR der Variablen gesucht wird, also wenn ich zum Beispiel in %ED% I: übergeben bekomme,
soll an die Suchfunktion H: übergeben werden.

Wenn nun in der txt H: gefunden wird, sollte die darüberliegende Zeile


"\\?\Volume{341e1d72-594d-11de-b993-806e6f6e6963}\"


in einem String gespeichert werden.


Hintergrund ist, dass ich das Mounten eines mit TrueCrypt verschlüsselten EXTERNEN Laufwerks automatisieren will, unabhängig davon, an welchem PC ich es anschließe und wie dort die Laufwerksbuchstabenbelegungen sind.
Meine Festplatte ist in zwei Partitionen unterteilt, auf der zweiten Partition läuft TrueCrypt, dass beim Anschließen automatisch das Laufwerk durch Starten der Bat (bis auf die Passworteingabe) entschlüsseln soll. Hierzu lasse ich
erst die Roots aller Laufwerksbuchstaben nach einer bestimmten File durchsuchen die auf meiner zweiten Partition liegt, wenn diese gefunden wird weiß ich, dass der vorherige Laufwerksbuchstabe zur ersten - verschlüsselten - Partition gehört, deshalb wähle ich den Buchstaben, der vor dem liegt, der in %ED% gespeichert ist.
Mit dem extrahierten String (\\?\Volume{341e1d72-594d-11de-b993-806e6f6e6963}\) kann ich mir nun einen Startparameter für TrueCrypt zusammenbauen.

Soweit die Theorie, in der Praxis haperts leider noch etwas im Bereich "Durchsuchen der Textdatei", ich hoffe ihr könnt mir hier helfen und ich hoffe, mein Beitrag ist nicht zu ausführlich.

Mit freundlichen Grüßen,

DMaaan
Mitglied: rubberman
08.07.2009 um 02:24 Uhr
Versuch mal was in der Art:
01.
@echo off &setlocal 
02.
 
03.
:: dein Vorspiel: (nur zu Testzwecken %ED% mit Wert I:) 
04.
Set "ED=I:" 
05.
 
06.
 
07.
:: ****Start 
08.
:: deine Textdatei (anpassen): 
09.
set file=c:\test\mountvol.txt 
10.
 
11.
Set "EDshort=%ED:~0,1%" 
12.
Set "LW=A B C D E F G H I J K L M N O P Q R S T U V W X Y Z" 
13.
for %%a in (%LW%) do ( 
14.
if defined EDfind goto weiter 
15.
call :sub1 %%a 
16.
17.
:weiter 
18.
for /f "tokens=*" %%a in (%file%) do ( 
19.
if defined string goto Verarbeitung 
20.
call :sub2 %%a 
21.
22.
 
23.
:sub1 
24.
if defined lwbefore ( 
25.
 if %EDshort%==%1 set "EDfind=%lwbefore%:\" 
26.
27.
set "lwbefore=%1" 
28.
goto :eof 
29.
 
30.
:sub2 
31.
if defined linebefore ( 
32.
 if %EDfind%==%1 set "string=%linebefore%" 
33.
34.
set "linebefore=%1" 
35.
goto :eof 
36.
:: ***Ende 
37.
 
38.
 
39.
:Verarbeitung 
40.
:: ab hier dein weiterer Code: (nur zu Testzwecken Ausgabe von %string%) 
41.
echo %string% 
42.
pause
Bitte warten ..
Mitglied: DMaaan
08.07.2009 um 10:23 Uhr
Vielen Dank, funktioniert perfekt!

MfG DMaaan
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Batch bestimme Zeile einer vorherigen batch einfügen (9)

Frage von Frensche zum Thema Batch & Shell ...

PHP
gelöst TXT Datei auslesen und bestimmte Zeilen in Variable setzen (11)

Frage von 126594 zum Thema PHP ...

Batch & Shell
gelöst Powershell Zip extrahieren (2)

Frage von Marabunta zum Thema Batch & Shell ...

Neue Wissensbeiträge
Windows Update

Microsoft Update KB4034664 verursacht Probleme mit Multimonitor-Systemen

(2)

Tipp von beidermachtvongreyscull zum Thema Windows Update ...

Viren und Trojaner

CNC-Fräsen von MECANUMERIC werden (ggf.) mit Viren, Trojanern, Würmern ausgeliefert

(4)

Erfahrungsbericht von anteNope zum Thema Viren und Trojaner ...

Windows 10

Windows 10: Erste Anmeldung Animation deaktivieren

(3)

Anleitung von alemanne21 zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Netzwerkprotokolle
Leiten "dumme" Switches VLAN-Tags mit durch? (23)

Frage von coltseavers zum Thema Netzwerkprotokolle ...

Windows Server
gelöst Neues KB für W10 1607 und W2K16 wieder mal nicht im WSUS 3.0, hat das noch jemand? (15)

Frage von departure69 zum Thema Windows Server ...

Batch & Shell
Batch zum suchen und verschieben von Verknüpfungen (12)

Frage von zeroblue2005 zum Thema Batch & Shell ...

Router & Routing
FTTH bzw FTTB Router (11)

Frage von ukulele-7 zum Thema Router & Routing ...