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, 4162 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 ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
Batch-Variable nach Stichworten aus TXT Datei durchsuchen (3)

Frage von Markus5579 zum Thema Batch & Shell ...

Webentwicklung
gelöst HTML Output in eine txt Datei mit VisualBasicScript (2)

Frage von coca22COCA zum Thema Webentwicklung ...

Batch & Shell
Merkwürdige Zeilenformatierung in txt Datei (3)

Frage von miczar zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...