Batch if exist für ganzen PC nutzen

  • Ersteller Ersteller apes90
  • Erstellt am Erstellt am
A

apes90

Gast
Hallo,

ich bin gerade dabei ein Batch programm zu erstellen.
Ich verwende if exist als Suchbefehl.
Leider sucht das Batchprogramm immer nur auf dem Desktop(wo die Batch Datei halt liegt).

Frage:

Wie kann ich das machen dass das eingegebene Wort auf dem ganzen Pc gesucht wird?

So habe ich geschrieben:

if exist %eingabe% (goto 1) else (goto 2).

Danke für eure Hilfe
 
Dafür gibts Everything. Mit einer Batch kommst du da nicht weit. if exists hat auch eine völlig andere Bedeutung.
 
eine zeile vorher cd \
dann sollte es in den Verzeichnisroot wechseln sprich c:\
 
if exists bringt ihm aber trotzdem nichts.
apes90 schrieb:
Wie kann ich das machen dass das eingegebene Wort auf dem ganzen Pc gesucht wird?
Code:
dir /S \ | findstr /i %eingabe%
Nur leider braucht der Befehl Jahre (je nach Inhalt der Platte), da jedes einzelne Verzeichnis durchgegangen wird. Weiterhin hast du bei Systemdateien Probleme, denn auf diese hast du keinen Zugriff (-> Adminrechte).

Installier dir Everything, das macht genau das, 100000000 Mal schneller und 100000 mal komfortabler.
 
Du musst das Problem aufteilen. Du musst zuerst ins Root Verzeichnis, da suchst du, und schreibst das Ergebnis in eine txt Datei die in dem Verzeichnis liegt wo du die batch hast.
Und wenn die Ergebnis.txt existiert dann....
Code:
cd c:\
dir DATEINAME /s >C:\PFADzuDERBatch\Ergebnis.txt
cd C:\PFADzuDERBatch\

einfach schauen das du am Schluss die Ergebnis.txt wieder löscht...
 
Ok weist du wie ich die Situation lösen kann.
Soll so eine Art Suchmaschine für den Pc werden!

Danke
Ergänzung ()

@echo off
color 0e
echo.
echo.
echo Dies ist eine Suchhilfe fuer Windows.
echo.
echo.
echo.
echo.
:1
echo Geben Sie den Namen der Datei an.
set /p eingabe=
if exist c:\%eingabe% (goto ja) else (goto nein)
:ja
echo "%eingabe%" existiert!
set /p userinp=Pfad ausgeben(j-n-exit)?
if %userinp%==j goto 3
if %userinp%==n goto 1
if %userinp%==exit goto end
cls
:3
echo Zeige den Pfad von "%eingabe%" an.
tree %eingabe%
echo.
echo weitermachen(j-n)?
echo.
set /p userinp=%userinp%
if "%userinp%"=="j" goto 1
if "%userinp%"=="n" goto end
:nein
echo Datei "%eingabe%" existiert nicht, weitermachen?
set /p userinp=wählen Sie eine Moeglichkeit(j-n-c):
if "%userinp%"=="j" goto 1
if "%userinp%"=="n" goto end
if "%userinp%"=="c" goto 2
:2
 
Das funktioniert so nicht wie gesagt. Du musst dir erstmal den kompletten Festplatteninhalt auslesen lassen. Diesen durchsuchst du danach oder simultan nach deiner Eingabe.
Code:
dir \ /S > inhalt.txt
findstr "%eingabe%" inhalt.txt
oder simultan:
Code:
:: ...
dir \ /S | findstr "%eingbabe%"
if errorlevel 1 goto :nicht_gefunden
:: gefunden
:nicht_gefunden
:: ...
if exists prüft nur im aktuellen oder angegebenen Verzeichnis.
 
Eigentlich kannst du es gleich aufgeben, denn das Durchsuchen der Platte allein dauert länger als einen widerspänstigen Luftballon aufzublasen.

Theoretisch musst du aber nur
Code:
if exist c:\%eingabe% (goto ja) else (goto nein)
durch
Code:
dir \ /S | findstr "%eingabe"
if errorlevel 1 goto :nein
goto :ja
ersetzen.

Hier muss dir aber bewusst sein, dass wenn du nach appdata suchst, alles mit C:\Users\<username>\AppData gefunden wird. Alle Verzeichnisse darin, alle Dateien darin. Wenn du nur nach Dateien oder Ordnern suchen willst, musst du mit einer Schleife alles durchgehen und die Teile extrahieren vom Pfad.
 
Danke für deine Hilfe ich mache das nur um das Batch scripting besser zu verstehen(Ausbildung)!!
Ergänzung ()

OMG das dauert ja ewig!!

Jetzt weis ich was du meinst!!!
Ergänzung ()

Hallo!

Habe jetzt den Code gegen deinen getauscht nur findet er jetzt gar nichts.
Muss ich noch irgendetwas beachten??
 
Zuletzt bearbeitet:
erstmal musst du hier zw. 8.3 Dateinamen unterscheiden, weil bei LFN brauchst du Anführungenszeichen.

Beispiel:

Code:
Rem Batchfind
Echo OFF&Setlocal

If exist "C:\Verzeichnis mit Namen\Dateiname.ext" (Goto Ausgabe) Else Echo Datei existiert nicht

:Ausgabe
Echo Datei existiert

Zum suchen nimmt man If Exist bestimmt nicht her.
 

Ähnliche Themen

D
Antworten
2
Aufrufe
7.119
derpaddie
D
Zurück
Oben