noah1400
Goto Top

Mit Batch einen Ordne mit .txt Dateien nach einem Wort durchsuchen

Hallo
Ich möchte eine Art login mit Batch programieren.
Als erstes gibt es eine Eingabe dort gibt man seinen Benutzername ein.
Dieser soll in einem Ordner (names "USERS") der voll mit .txt Dateien ist gesucht werden.
Mein erster Versuch:
@echo off
findstr "%USER%" %USERPROFILE%\Desktop\USERS\*.txt && echo Gefunden!
PAUSE
Das funktioniert auch zur hälfte aber hat jemand eine Ahnung wie man das machen kann, dass auch angezeigt wird in welcher Datei und in welcher Zeile der Username gefunden wurde.
Oder noch besser wenn Datei und Zeile in 2 Variablen gespeichert werden.
Und dann noch eine Frage ist es möglich in einer Datei nur eine Zeile zu durchsuchen?
Ich hoffe das ist jetzt nicht zu viel für euch.
Schonmal Danke im vorraus
LG
Noah

Content-Key: 280090

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

Printed on: April 18, 2024 at 00:04 o'clock

Member: bastla
bastla Aug 13, 2015 updated at 11:04:23 (UTC)
Goto Top
Hallo noah1400!

Versuch es etwa so (ungetestet):
@echo off & setlocal
set "Ordner=%USERPROFILE%\Desktop\USERS"  
set "Datei="  
set "Zeile="  

pushd "%Ordner%"  
for /f "tokens=1* delims=:" %%i in ('findstr /i "%USER%" *.txt') do (  
    set "Datei=%%i"  
    set "Zeile=%%j"  
)
popd
if not defined Datei (
    echo "%USER%" nicht gefunden!  
    pause
    goto :eof
)
echo Gefunden: "%Zeile%" in "%Datei%"  
Grüße
bastla

[Edit] Korrektur in Zeile 7 vorgenommen [/Edit]
Member: noah1400
noah1400 Aug 13, 2015 at 10:54:05 (UTC)
Goto Top
hey bastla
ich bekomme da eine fehlermeldung
""do"kann an dieser Stell Syntaktisch nicht verwendet werden"
hast du dafür vielleicht eine Lösung?
Grüße
noah
Member: bastla
bastla Aug 13, 2015 at 11:05:20 (UTC)
Goto Top
Hallo noah1400!

Korrektur oben nachgereicht ...

Grüße
bastla
Member: noah1400
noah1400 Aug 13, 2015 updated at 12:14:03 (UTC)
Goto Top
Hey bastla!
Jetzt gibt es zwar kein ERROR mehr aber es sucht immer noch in der ganzen Datei und nicht in der angegebenen Zeile.
Denn wenn ich Zeile=2 setze findet er den User obwohl der in Zeile 1 steht!?
Hast du dafür vielleicht auch eine Lösung?
LG
noah
Member: bastla
bastla Aug 13, 2015 at 15:12:49 (UTC)
Goto Top
Hallo noah1400!

Was meinst Du mit "angegebener Zeile" - es wird doch die Zeile anhand von %USER% erst gesucht ...

Magst Du vielleicht einmal ein Beispiel einer solchen Datei und das gewünschte Ergebnis (als "Code" formatiert) posten?

Grüße
bastla
Member: noah1400
noah1400 Aug 13, 2015 updated at 16:05:54 (UTC)
Goto Top
Lieber bastla
Vielleicht habe ich oben meine Frage nicht richtig formoliert.
Ich möchte ein Login machen.
als erstes gibt es eine eingabe wo man einen username eingeben muss dann wird dieser username in einem ordner gesucht wenn dort keine .txt Datei vorhanden ist wird nach einem neuen passwort gefragt (also dann muss man sich registrieren). Wenn aber ein .txt mit dem namen %username%.txt vorhanden.
Wird nach einem Passwort gefragt dieses wird dann in der %username%.txt datei mit der 2. Zeile verglichen (weil da das Passwort steht).
Und dann geht es so weiter wie man das ja von einem normalen Login so kennt.
Jetzt ist meine Frage wie und ob ich das hinbekomme!?
Ich hoffe du (ihr)hast (habt) da für mich eine Lösung.
LG
noah
ps.: hier die datei
Username
1234
Member: bastla
Solution bastla Aug 13, 2015 updated at 17:30:44 (UTC)
Goto Top
Hallo noah1400!

Über die Sinnhaftigkeit von als Klartext gespeicherten Passwörtern will ich gar nicht diskutieren, und für die Verwendung einzelner Dateien anstatt einfach einer Liste in einer einzigen Datei wirst Du auch gute Gründe haben - daher: Wenn die Datei tatsächlich %USER%.txt heißen muss und die Zeile 2 nur das Passwort enthält, sollte eigentlich
set "PW="  
if exist "%USERPROFILE%\Desktop\USERS\%USER%.txt" (  
    for /f "usebackq skip=1 delims=" %%i in ("%USERPROFILE%\Desktop\USERS\%USER%.txt") do if not defined PW set "PW=%%i"  
) else (
    echo "%USER%" nicht gefunden!  
    pause
    goto :eof
)
echo Passwort: %PW %
genügen.

Die letzte Zeile ist natürlich als Demo gedacht und der Batch ist ungetestet ...

Grüße
bastla
Member: noah1400
noah1400 Aug 13, 2015 at 17:31:10 (UTC)
Goto Top
Danke
Klappt einwandfrei!
LG
noah