Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Mehrere Verzeichnisse durchsuchen um eine Datei zu finden

Frage Entwicklung Batch & Shell

Mitglied: Highend01

Highend01 (Level 1) - Jetzt verbinden

09.01.2013 um 16:18 Uhr, 2096 Aufrufe, 3 Kommentare

Hallo zusammen.

OS: Windows 7 x64

Ich möchte gern mehrere Verzeichnisse durchsuchen, um eine bestimmte Datei zu finden.

01.
@echo off 
02.
SET "findFileName=btest.exe" 
03.
SET "searchFolders=%SystemRoot%\System32 %SystemRoot%\SysWOW64" 
04.
FOR %%A IN (%searchFolders%) DO ( 
05.
	DIR /B "%%A" | FINDSTR /IL "%findFileName%" 
06.
	echo %errorlevel%  
07.
)
Ich habe hier aber eine ganze Reihe von Problemen ;(

1. Gibt es eine Möglichkeit, ein anderes Trennzeichen als ein Leerzeichen für die zu durchsuchenden Ordner zu wählen? Ansonsten sieht es dumm aus, wenn ich in einem Verzeichnis suchen will, welches selber Leerzeichen aufweist.

2. Der Errorlevel ist immer 0, egal ob überhaupt eine Datei gefunden wird, oder nicht... Darauf kann ich natürlich nicht vernünftig reagieren (ich würde per GOTO aus der FOR Schleife rausspringen, sobald ein Treffer gefunden wird).

Was hab ich übersehen?

Danke und Gruß,
highend01
Mitglied: bastla
09.01.2013, aktualisiert um 17:16 Uhr
Hallo Highend01!

zu 1.
Du kannst doch einfach die jeweiligen Pfade unter Anführungszeichen setzen:
set searchFolders="%SystemRoot%\System32" "%SystemRoot%\SysWOW64"
zu 2.
Aus Schleifen zu springen würde ich grundsätzlich nicht empfehlen - je nachdem, was Du weiter vor hast, könntest Du eine (Schalter-)Variable verwenden:
01.
set "Gefunden=" 
02.
for %%a in (%searchFolders%) do if exist "%%~a\%findFileName%" set "Gefunden=%%~a" 
03.
if defined Gefunden echo %findFileName% in %Gefunden% gefunden.
Um nach dem ersten Fund keine weiteren Ordner mehr zu durchsuchen (als Ersatz für die Zeile 2):
for %%a in (%searchFolders%) do if not defined Gefunden if exist "%%~a\%findFileName%" set "Gefunden=%%~a"
Analog dazu, wenn auch Unterordner durchsucht werden sollen:
01.
set "Gefunden=" 
02.
for %%a in (%searchFolders%) do for /f "delims=" %%i in ('dir /s/b/a-d "%%~a\%findFileName%"') do set "Gefunden=%%i" 
03.
if defined Gefunden echo %findFileName% in %Gefunden% gefunden.
oder
for %%a in (%searchFolders%) do if not defined Gefunden for /f "delims=" %%i in ('dir /s/b/a-d "%%~a\%findFileName%"') do set "Gefunden=%%i"
Grüße
bastla
Bitte warten ..
Mitglied: Highend01
09.01.2013 um 21:55 Uhr
Herzlichen Dank, bastla!
Bitte warten ..
Mitglied: pieh-ejdsch
09.01.2013, aktualisiert um 22:43 Uhr
moin,

Eigentlich gibt es dafür die etwas unschön aussehende For-Erweiterung
%~dpnx$PATH:I
Welche die/den erste Gefundene Datei/Ordner in einer mit Semikolon getrennten Auflistung von Verzeichnissen aus einer Variable Erweitert.

01.
set "searchFolders=%SystemRoot%\System32;%SystemRoot%\SysWOW64" 
02.
for %%i in (btest.exe) do if "%%~$searchFolders:i" neq "" echo %%~$searchFolders:i
Gruß Phil
Bitte warten ..
Ähnliche Inhalte
Grafik
Mehrere PDF-Dateien Wörtern durchsuchen (2)

Frage von Sprudi zum Thema Grafik ...

Windows 10
Verzeichnis nach Dateiinhalt durchsuchen (5)

Frage von MPFG zum Thema Windows 10 ...

Linux Tools
gelöst Dateien in Unix finden, die mehrere Strings beinhalten (7)

Frage von renegade51 zum Thema Linux Tools ...

Batch & Shell
gelöst Update mehrerer Verzeichnisse auf FTP-Server (3)

Frage von caspi-pirna zum Thema Batch & Shell ...

Neue Wissensbeiträge
Windows 10

Erneutes Starten eines Programmes mit Admin-Rechten

Tipp von Estefania zum Thema Windows 10 ...

Ubuntu

Ubuntu 17.10 steht zum Download bereit

Information von Frank zum Thema Ubuntu ...

Datenschutz

Autofahrer-Pranger - Bewertungsportal illegal

(8)

Information von BassFishFox zum Thema Datenschutz ...

Windows 10

Neues Win10 Funktionsupdate verbuggt RemoteApp

(3)

Information von thomasreischer zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Router & Routing
Allnet - VDSL2 Modem - SFP (mini-GBIC) (20)

Frage von Dobby zum Thema Router & Routing ...

Voice over IP
DeutschlandLAN IP Voice Data M Premium, Erfahrung mit Faxgeräte? (17)

Frage von liquidbase zum Thema Voice over IP ...

TK-Netze & Geräte
TK-Anlage VoIP - DECT Erweiterung (16)

Frage von Lynkon zum Thema TK-Netze & Geräte ...