retz12
Goto Top

CMD Programm User abfragen

Hallo,
Ich stehe bei einem wahrscheinlich simplen Anwendungsfall an.

Ich möchte von einer .txt Datei die User abfragen und mit dem eingeloggten abgleichen.
Wenn der angemeldete User in der txt Datei vorhanden ist, soll er zu einer bestimmten Zeile (goto) springen!
Wenn der User nicht in der txt Datei vorhanden ist, soll das Script normal abgearbeitet werden.

meine bisherigen Programmierkünste:

@ECHO off
SET Pfad=D:\test\
cls

for /F %%f IN ("%pfad%delUser.txt") DO (  
  IF "%%f" == "%username%" (  
        goto delete
    ) ELSE (
        goto start
    )	
)

Vielleicht hat jemand so einen gleiche Fall, und könnte mir behilflich sein.

Content-ID: 1168606823

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

Ausgedruckt am: 25.11.2024 um 00:11 Uhr

PeterPanter
PeterPanter 18.08.2021 aktualisiert um 13:47:32 Uhr
Goto Top
Vielleicht hat jemand so einen gleiche Fall, und könnte mir behilflich sein.

Hi, wofür die ganzen Anführungszeichen?
SET Pfad=D:\test\
cls 

for /F %%f IN (%pfad%delUser.txt) DO (
  IF %%f == %username% (
        goto delete
    ) ELSE (
        goto start
    )	
)
So läut's in Win10, getestet ohne Sprünge (ich weiß ja gar nicht wohin du springst und was da passiert)
/pp

p.s. Wofür die gotos? Ich würde nicht aus der Schleife rausspringen, pack die Befehle die bei IF laufen sollen in die betreffenden Klammern und bei ELSE genauso.
PeterPanter
PeterPanter 18.08.2021 um 13:50:05 Uhr
Goto Top
149062
Lösung 149062 18.08.2021 aktualisiert um 17:05:17 Uhr
Goto Top
Zitat von @PeterPanter:
Hi, wofür die ganzen Anführungszeichen?
Hat mehrere essentielle Gründe zur Fehlervermeidung!
Erstens wenn der Pfad Leerzeichen beinhalten würde, zweitens im IF-Vergleich und evt. leerer Lauf-Variable fällt diese mit einem Syntax-Fehler auf die Fresse weil die Variable dann leer ist deswegen setzt man dort bei erwarteten oder leeren Strings immer einen Delimiter damit der Vergleich trotzdem noch funktioniert (gib mal if == UserXYZ in die CMD ein dann siehst du was ich meine, drittens evt. Sonderzeichen die das ganze zum Fall bringen könnten.

@echo off
set "Pfad=D:\test"  
for /f "delims=" %%f in ("%pfad%\delUser.txt") do (  
  if /i "%%f" == "%username%" echo Do something with the result  
)

Wobei ich das ganze stattdessen gleich so ohne lahme Schleife machen würde
findstr /ilxc:"%username%" "D:\test\deluser.txt" >nul 2>&1 && (  
    echo User exists, do something
) || (
   echo User does not exist in file, do something else
)
PeterPanter
PeterPanter 19.08.2021 um 08:05:47 Uhr
Goto Top
@149062: Danke für den Hinweis (Anführungszeichen). Schöne Lösung mit findstr!