motorcross
Goto Top

Batch. Nach einer Datei auf dem ganzen PC suchen (also alle Laufwerke durchsuchen) und dann deren Pfad in eine Variable schreiben v.2

Hallo Administratoren,

vor einigen Tagen habe ich die Frage:"Batch. Nach einer Datei auf dem ganzen PC suchen (also alle Laufwerke durchsuchen) und dann deren Pfad in eine Variable schreiben " gepostet.
Ich habe noch eine Frage.
Wie kann man das Script programmieren, dass es alle Laufwerke durchsucht außer einem Einzigen.
Dieses steht in einer Variablen namens %auslassen%
Und in dieser Variablen könnze z.B "J:" stehen.
Wie kann man das umsetzen?
Gruß Motorcross

Content-Key: 136434

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

Printed on: April 19, 2024 at 19:04 o'clock

Member: bastla
bastla Feb 20, 2010, updated at Oct 18, 2012 at 16:41:12 (UTC)
Goto Top
Hallo Motorcross!

Wenn Du inzwischen keine andere Version als jene in Deinem vorigen Thread hast: Einfach die Zeile
IF not defined PfadGefunden FOR /F "delims=" %%i in ('dir /b /s "j:\%dieZuSuchende%" ^2^>Nul') do Set "PfadGefunden=%%~dpi"
nicht verwenden ... face-wink

Sollte Dein Batch aber anders aussehen, wäre es in Deinem Interesse, diesen auch zu posten ...

Grüße
bastla
Member: Motorcross
Motorcross Mar 25, 2010 at 17:25:00 (UTC)
Goto Top
Hallo bastla,
hier mein Problemscript.
Es soll die Datei blabla.txt gesucht werden.
cd /d %temp%
echo For Each D In CreateObject ("scripting.FileSystemObject").Drives:If D.DriveType=2 And D.IsReady Then:WScript.Echo D:End If:Next>GetDrives.vbs  
set dieZuSuchende=blabla.txt
If not defined PfadGefunden for %%d in ('cscript //nologo %temp%\GetDrives.vbs') do (  
    for /f "delims=" %%i in ('dir /b /s "%%d\%dieZuSuchende%" ^2^>Nul') do set "PfadGefunden=%%~dpi"  
)
Echo Datei "%dieZuSuchende%" im Pfad "%PfadGefunden%" gefunden.  

pause
Ich weiß aber nicht wo der Fehler liegt!
Gruß Motorcross
Member: Biber
Biber Mar 25, 2010 at 17:36:49 (UTC)
Goto Top
Moin Motorcross,

Ich weiß aber nicht wo der Fehler liegt!
Steht doch da - das "if not defined PfadGefunden" gehört INNERHALB der Rödele-durch alle-Laufwerke-FOR-Anweisung.

Reihenfolge / Verschachtelung der beiden FORs:
REM ungetesteter Pseudocode
...
cd /d %temp%
echo For Each D In CreateObject ("scripting.FileSystemObject").Drives:If D.DriveType=2 And D.IsReady Then:WScript.Echo D:End If:Next>GetDrives.vbs  
set dieZuSuchende=blabla.txt
...
for /F %%d in ('cscript //nologo %temp%\GetDrives.vbs') do (  
       If not defined PfadGefunden   ( 
                    for /f "delims=" %%i in ('dir /b /s "%%d\%dieZuSuchende%" ^2^>Nul') do set "PfadGefunden=%%~dpi"  
                     )
)
Echo Datei "%dieZuSuchende%" im Pfad "%PfadGefunden%" gefunden.  
...

Grüße
Biber

[Edit] bastla: Das fehlende /F der ersten FOR-Anweisung habe ich gar nicht wahrgenommen - aber jetzt im auch in der Skizze nachgetragen
Zu dem "IF defined Pfadgefunden".... ich wüsste nicht, wann und warum denn in Motorcross' Schnipsel jemals diese Prüfung ein "Jupp, is' defined" ergeben könnte.[Edit]
Member: bastla
bastla Mar 25, 2010 at 17:37:19 (UTC)
Goto Top
Hallo Motorcross!

Sorry, war vorhin ein wenig unkonzentriert - deshalb fehlt der "for %%d"-Schleife das "/f" face-sad

So sollte es dann besser gehen:
cd /d %temp%
echo For Each D In CreateObject ("scripting.FileSystemObject").Drives:If D.DriveType=2 And D.IsReady Then:WScript.Echo D:End If:Next>%temp%\GetDrives.vbs  
set dieZuSuchende=blabla.txt
If not defined PfadGefunden for /f %%d in ('cscript //nologo %temp%\GetDrives.vbs') do (  
    for /f "delims=" %%i in ('dir /b /s "%%d\%dieZuSuchende%" ^2^>Nul') do set "PfadGefunden=%%~dpi"  
)
if not defined PfadGefunden Echo Datei "%dieZuSuchende%" nicht gefunden & goto :eof  
Echo Datei "%dieZuSuchende%" im Pfad "%PfadGefunden%" gefunden.  

pause
Grüße
bastla

[Edit]
@Biber: Da es sich bei diesem Schnipsel um einen Auszug aus einem insgesamt etwas umfangreicheren Oevre handelt, könnte das "if not defined" tatsächlich auch vor die Schleife gehören - in der Schleife ist's aber auf jeden Fall sinnvoll ...
[/Edit]


[Edit2]
ich wüsste nicht, wann und warum denn in Motorcross' Schnipsel jemals diese Prüfung ein "Jupp, is' defined" ergeben könnte.
Ich weiß es auch nicht mehr - sollte sich durch einen anderen Thread erklären lassen.
Andererseits stört's im Fall des Falles aber eigentlich nur aus ästhetischen Gründen ...
[/Edit2]
Member: Motorcross
Motorcross Mar 25, 2010 at 19:00:35 (UTC)
Goto Top
Vielen Dank biber und bastla!
Gruß Motorcross