CMD If-Abfrage ob eine Datei existiert?


25.04.2020, 16:31

Etwas genauer:

Schritt 1: Ich gebe ein Wort ein ich nehme jetzt Baum

Schritt 2: Die Kommandozeile sucht in dem Ordner Data/Personen nacht Der Datei Baum.txt

Schritt 3: Die Kommandozeile findet die Datei und gibt ein goto Befehl aus ODER Die Kommandozeile findet die .txt Datei nicht und gibt den Text aus (Das Wort Baum gibt es nicht)

3 Antworten

Das kannst du doch auch mit dem Befehl dir und dann gucken was da drin ist

Ggf dir *.Dateiendung

Wenn es die Datei gibt müsste die Datei auch in der Übersicht erscheinen.

Oder was meinst du?

WitherHD 
Fragesteller
 25.04.2020, 16:11

Es soll automatisch ablaufen .Ich gebe was ein es soll danach in einem Ordner gesucht werden.

Wenn es die Datei gibt soll er einen Goto Befehl ausgeben .

Wenn es die Datei nicht gibt soll er sagen (Das Wort "test" gibt es nicht)

0

trivial, viele Wege führen nach Rom...

Mit: if exist "Pfad" machwas sind allerdings nur gezielte Abfragen in vorgegebenen Ordnern möglich

Demo.cmd

  rem zur Demo TestOrdner erzeugen und TestDatei erzeugen
md Test\Sub\SubTest 2>nul
(call)>"Test\Sub\SubTest\Baum.txt"

set /p "MyFileName=Gib Baum ein!"
  rem gezielt in  einem  bestimmten Ordner
if exist "Test\Sub\SubTest\%MyFileName%.txt"   (
    goto :OK
) else (
    echo  "Test\Sub\SubTest\%MyFileName%.txt" nich da!!!!!!!!!!!!
    timeout 5 >nul
    exit /b
)
:OK
echo Die Datei "%MyFileName%.txt" existiert!
pause

oder gezielter Blindflug:

   rem Eingabe  w/o
   rem feststellen ob  die  Textdatei  mit dem eingegebenen Namen in irgend einem  Unterordner existiert
dir /b /s /a:-d "%MyFileName%.txt"|find /i "%MyFileName%"   &&(
    goto :OK
) || (
    echo  Nicht  gefunden!!!!!!
    timeout 5 >nul
    exit /b
)
:OK
  rem dito

das gleich ohne das man die Ergebnisse von "dir" sieht:

  rem dito
  rem mit unterdrückter  Pfadausgabe
dir /b /s /a:-d "%MyFileName%.txt" 2>nul|find /i "%MyFileName%" >nul &&(
    goto :OK
) || (
    echo  "%MyFileName%.txt" in keinem Unterordner!!!!!!
    timeout 5 >nul
    exit /b
)
:OK
  rem dito

Eine implizite Auswertung der Errorlevel (hier von "Find" 0=gefunden) mit:

  • "&&" für errorlevel 0 (Wahr)
  • "||" für errorlevel>0 (falsch/fehler)

wichtig wenn ein zweiter (||)-Zweig angegeben wird, müssen die Ausgeführeten Optionen im Klammeblock gehalten werden!

Glossar:

Woher ich das weiß:eigene Erfahrung – Ich mach das seit 30 Jahren

Kommt drauf an für was du das Programm benützen willst, du könntest ja im Datei Explorer einfach eine Suche starten

Woher ich das weiß:eigene Erfahrung
WitherHD 
Fragesteller
 25.04.2020, 16:06

Ich will das für ein kleines Spiel nutzen. Ich gebe ein Charackter ein, wenn es den nicht gibt soll gesagt werden das es ihn nicht gibt und wenn es ihn gibt soll eine goto Befehl folgen

0