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

In .txt nach einem, teils bekannten Ausdruck suchen und als Variable setzen

Frage Entwicklung Batch & Shell

Mitglied: ov3rclock3d

ov3rclock3d (Level 1) - Jetzt verbinden

01.12.2008, aktualisiert 20:31 Uhr, 3804 Aufrufe, 5 Kommentare

Hallo erstmal, bin neu hier und habe sogleich schon eine Frage, die mich bereits lange Zeit verfolgt.
Ich hoffe, dass ihr mir helfen koennt..

Ich habe eine test.txt Datei mit variierendem Inhalt. Irgendwo in dieser test.txt ist ein Ausruck "btp=XXXXXXX" ohne ", wobei die Xe Platzhalter sind, da der Wert, der fuer btp steht auch variiert. Nun wuerde ich gerne den kompletten Ausdruck als Variable haben. Nach dem "btp=" folgen noch genau 7 Stellen, das ist sicher, jedoch ändert sich die Position des Ausdrucks in der test.txt und ist mir somit unbekannt. Ich hoffe, ihr versteht mein Problem. Bitte bitte, helft mir (-:
Mitglied: Silentd
01.12.2008 um 15:11 Uhr
Mit der Wildcard "btp=*" würde es unter anderem funktionieren. Ohne die ""
Bitte warten ..
Mitglied: ov3rclock3d
01.12.2008 um 15:21 Uhr
Oh tut mir Leid, ich hab' vergessen zu erwaehnen, dass der Ausdruck nicht alleine dasteht. zB "abcbtp=1234567xyz
Der Platzhalter * würde dann ja für 1234567xyz stehen oder hab' ich das falsch verstanden? Ich brauche aber das btp=1234567 alleine.
Bitte warten ..
Mitglied: bastla
01.12.2008 um 16:26 Uhr
Hallo ov3rclock3d und willkommen im Forum!

Da sich offensichtlich der gesuchte String mitten im Text (und nicht alleine in einer Zeile) befindet, macht das nur mit Batch nicht wirklich Spaß - daher ein Batch mit einem Stück (integriertem) VBScript:
01.
@echo off & setlocal 
02.
set "Datei=D:\test.txt" 
03.
set "Suche=btp=" 
04.
set Stellen=11 
05.
 
06.
set G=%temp%\GetString.vbs 
07.
>%G%  echo T=CreateObject("Scripting.FileSystemObject").OpenTextFile(WScript.Arguments(0)).ReadAll 
08.
>>%G% echo P=InStr(T,"%Suche%"):If P^>0 Then WScript.Echo Mid(T,P,%Stellen%) 
09.
set "Wert=nicht gefunden" 
10.
for /f "delims=" %%i in ('cscript %G% "%Datei%"') do set "Wert=%%i" 
11.
echo %Wert%
Da nach dem Suchbegriff noch genau 7 Stellen folgen, sind insgesamt 11 Stellen auszulesen - deswegen die Zuweisung in Zeile 4.

Zu beachten wäre noch, dass in dieser Fassung Groß-/Kleinschreibung beachtet und daher zB "Btp=" nicht gefunden wird ...

Grüße
bastla
Bitte warten ..
Mitglied: ov3rclock3d
01.12.2008 um 20:15 Uhr
Danke bastla!
Fuer mich ziemlich kompliziert, da auch noch VBScript dazu kommt aber ich kann mir die Funktionen teils denken, super danke, funktioniert ohne Probleme!
Bitte warten ..
Mitglied: bastla
01.12.2008 um 20:31 Uhr
Hallo ov3rclock3d!

Das VBScript ist ja halb so wild :
T=CreateObject("Scripting.FileSystemObject").OpenTextFile(WScript.Arguments(0)).ReadAll
Damit wird der gesamte Inhalt der an das Script übergebenen Datei ("WScript.Arguments(0)") in eine Text-Variable eingelesen - es entsteht also eine einzige Zeichenkette.

P=InStr(T,"%Suche%")
Innerhalb dieser Zeichenkette wird die Zeichenposition, an welcher der Suchbegriff (direkt aus dem Batch übernommen) zum ersten Mal gefunden wird, ermittelt.

If P>0 Then WScript.Echo Mid(T,P,%Stellen%)
Nur, wenn diese Position größer als Null ist, wurde der gesuchte Text tatsächlich gefunden - dann kann aber auch, beginnend an dieser Position, ein Teil, dessen Länge durch die Stellenanzahl (ebenfalls vom Batch geliefert) festgelegt wird, ausgegeben werden.

Diese Ausgabe - so es denn eine gibt (auch die Möglichkeit "nicht gefunden" muss ja berücksichtigt werden) - wird in der "for"-Schleife schließlich der Batchvariablen %Wert% zugewiesen. Finito.
Der Batch selbst ist ja nur ein Rahmen für das Script - dass er es auch selbst erzeugt, hat den Vorteil, nur eine einzige Datei "verwalten" zu müssen.

Grüße
bastla
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(2)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst Textdateien TXT in allen Verzeichnissen suchen und zusammenfassen (19)

Frage von chgs2011 zum Thema Batch & Shell ...

Batch & Shell
Variable setzen können während timeout (3)

Frage von DontFlameMeITryMyBest zum Thema Batch & Shell ...

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

Frage von Markus5579 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...

Outlook & Mail
Outlook 2010 findet ost datei nicht (18)

Frage von Floh21 zum Thema Outlook & Mail ...