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-Key: 1168606823

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

Printed on: April 27, 2024 at 10:04 o'clock

Member: PeterPanter
PeterPanter Aug 18, 2021 updated at 11:47:32 (UTC)
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.
Member: PeterPanter
PeterPanter Aug 18, 2021 at 11:50:05 (UTC)
Goto Top
Mitglied: 149062
Solution 149062 Aug 18, 2021 updated at 15:05:17 (UTC)
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
)
Member: PeterPanter
PeterPanter Aug 19, 2021 at 06:05:47 (UTC)
Goto Top
@149062: Danke für den Hinweis (Anführungszeichen). Schöne Lösung mit findstr!