newbie201
Goto Top

Text mit Batch Datei durchsuchen und ausgeben

Hallo,

ich bin blutiger Anfänger wenn es um batch Dateien geht, kann mir bitte jemand bei folgendem Problem helfen?

Habe eine Textdatei mit folgenden Inhalt:

Hammer Schublade 1
Zange Schublade 2
Säge Schublade 3
...

jetzt möchte ich mit einer Batch Datei folgende erreichen:


"Bitte Suchwort eingeben...
Zange
Zange befindet sich in Schublade 2

Bitte Suchwort eingeben....
lalala
konnte leider nicht gefunden werden"

sollte nicht allzu schwer sein, kenn mich aber einfach zu wenig aus.
Lassen sich auch Wörter mit Sonderzeichen abrufen?

Vielen Dank wenn mir jemand helfen kann

Content-Key: 481977

Url: https://administrator.de/contentid/481977

Printed on: April 16, 2024 at 19:04 o'clock

Member: erikro
erikro Aug 06, 2019 updated at 07:08:37 (UTC)
Goto Top
Moin,

in der Powershell ein Einzeiler:

import-csv .\werkzeug.txt -delimiter " " -header "Werkzeug", "Ort", "Nummer" | ?{$_.Werkzeug -eq "Hammer"}  

Vorausgesetzt, dass die Werkzeuge und Orte keine weiteren Leertasten enthalten. Sonst die Ausgangsdatei ein wenig ändern.

Hammer;Schublade;1
Zange;Schublade;2
Säge;Schublade;3

und dann entsprechend in der Befehlszeile

import-csv .\werkzeug.txt -delimiter ";" -header "Werkzeug", "Ort", "Nummer" | ?{$_.Werkzeug -eq "Hammer"}  

Und ja, es geht der gesamte Zeichensatz als Suchwort.

hth

Erik
Member: Kraemer
Kraemer Aug 06, 2019 at 06:58:53 (UTC)
Goto Top
Zitat von @newbie201:
ich bin blutiger Anfänger wenn es um batch Dateien geht,
sehr gut - dann vergiss dass. Veraltet.

Powershell:
$Schrank=Import-Csv -Path "C:\temp\Schrank.csv" -Delimiter " " -Header "Werkzeug","Fach","Nr"  
While ($true) {
    $Search=Read-Host -Prompt "Bitte Suchwort eingeben..."  
    If ($Search -in $Schrank.Werkzeug){
        $Ergebnis=$Schrank | Where-Object -Property "Werkzeug" -eq $Search  
        Write-Host ($Search+" befindet sich in "+$Ergebnis.Fach+" "+$Ergebnis.Nr)  
    } else {
        Write-Host "konnte leider nicht gefunden werden"  
    }
}

Der Code ließe sich massiv kürzen - ist so aber verständlicher beim "selber verstehen"
Mitglied: 140777
140777 Aug 14, 2019 updated at 14:48:37 (UTC)
Goto Top
Um die Frage trotzdem der Vollständigkeit halber auch noch in Batch zu beantworten
@echo off &setlocal
set "file=D:\testdaten.txt"  
set /p "search=Bitte Suchbegriff eingeben: "  
for /f "tokens=1,*" %%a in ('findstr /iblc:"%search%" "%file%" 2^>nul') DO set "result=%%b"  
if defined result (
	echo '%search%' befindet sich in '%result%'.	  
) else (
	echo Suchwort nicht gefunden.
)