killtec
Goto Top

Suche einer Bestimmten Datei in einem Laufwerk - Ausgabe des obersten Verzeichnisses

Hallo zusammen,
ich möchte ich einem Laufwerk nach einem bestimmten Dateityp suchen. Die Suche soll mir jedoch nur den obersten Ordner anzeigen, wo sich die Datei befindet.

Bsp.:
D:\
- Verz1
- Verz 1.1
- Verz 1.1.1
- Verz2
- Verz 3
- Verz 3.1

Die Dateien befinden Sich Bsp in Verz 1.1, Verz 1.1.1 und 3.1 Die Suche soll mir dann das oberste Verzeichnis ausgeben. Sprich due Ausgabe soll dann ergeben:
D:\Verz1.1
D:\Verz3.1

Das ganze soll auf einem Win7 x64 funktionieren. Kann ich hier was mit der powershell realisieren? Oder geht das mit einem einfachen "dir" in der cmd?

Danke.

Gruß

Content-ID: 243366

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

Ausgedruckt am: 22.11.2024 um 22:11 Uhr

Gersen
Gersen 11.07.2014 um 10:32:44 Uhr
Goto Top
Hallo,

so etwa (am Beispiel von TXT):

for /f "tokens=1,2 delims=\" %a in ('dir /B /S *.txt') do echo %a\%b  

Gruß,
Gersen
killtec
killtec 11.07.2014 aktualisiert um 10:46:37 Uhr
Goto Top
Hi Gersen,
funktioniert leider nicht.
"a\b" kann syntaktisch an dieser Stelle nicht verarbeitet werden.  


Habe deinen Code einfach in eine Batch gepackt und im Verzeichnis ausgeführt.

Gruß
Gersen
Gersen 11.07.2014 um 10:50:51 Uhr
Goto Top
Hi,

von der Kommandozeile schon... Wenn Du es innerhalb einer Batch-Datei aufrufen willst:

for /f "tokens=1,2 delims=\" %%a in ('dir /B /S *.txt') do echo %%a\%%b  

Gruß,
Gersen
killtec
killtec 11.07.2014 um 11:12:05 Uhr
Goto Top
Ja, so funktioniert es, gibt aber blöderweise nicht das richtige aus...
Bsp.:
D:\tmp\vztest>dir /b/s *.txt
D:\tmp\vztest\vt1\Neues Textdokument.txt
D:\tmp\vztest\vt1\vz2\Neues Textdokument.txt
D:\tmp\vztest\vz2\vz21\vz22\Neues Textdokument.txt
Ausgabe mit For.:
D:\tmp\vztest>for /F "tokens=1,2 delims=\" %a in ('dir /B /S *.txt') do echo %a\  
%b

D:\tmp\vztest>echo D:\tmp
D:\tmp

D:\tmp\vztest>echo D:\tmp
D:\tmp

D:\tmp\vztest>echo D:\tmp
D:\tmp

Gedacht ist, dass die Ausgabe dann so aussähe:
D:\tmp\vztest\vt1
D:\tmp\vztest\vz2\vz21\

Gruß
colinardo
colinardo 11.07.2014 aktualisiert um 13:03:46 Uhr
Goto Top
Moin,
probiers mal mit folgendem Powershell-Script:
$pfad = 'D:\Test'  
$filename = 'test.txt'  
$script:dirs = @()
function recurseFunc($folder){
    if ((Test-Path "$folder\$filename")){  
        $script:dirs +=$folder
    }else{
        $subfolders = dir $folder | ?{$_.PSIsContainer}
        $subfolders | %{recurseFunc $_.FullName}
    }
}
recurseFunc $pfad
$script:dirs
Grüße Uwe

p.s. schieb den Beitrag besser in die Kategorie Entwicklung > Shell/Batch
killtec
killtec 11.07.2014 um 12:54:43 Uhr
Goto Top
Hi Colinardo,
das funktioniert leider nicht:
PS D:\tmp\vztest> .\test.ps1
Skriptfehler aufgrund eines Überlaufs der Aufruftiefe. Die Aufruftiefe hat 1001
 erreicht. Der Höchstwert lautet 1000.
    + CategoryInfo          : InvalidOperation: (1001:Int32) , ParentContain
   sErrorRecordException
    + FullyQualifiedErrorId : CallDepthOverflow

PS D:\tmp\vztest>

Gruß
colinardo
colinardo 11.07.2014 aktualisiert um 12:57:04 Uhr
Goto Top
hab ich mir schon gedacht das das kommt face-wink, Script ist nicht für ganze Festplatten und Verzeichnisse mit extremer Tiefe geeignet ...
killtec
killtec 11.07.2014 um 12:59:24 Uhr
Goto Top
Hi,
nee, hab was übersehen... Habe die Variablen Pfad und Filename nicht angepasst face-sad
Habs erstmal über ein Testverzeichnis gejagt, da hats geklappt. Teste es nachehr noch auf dem Zielsystem.
Denke das es klappt face-smile
Kann ich das noch in eine Ausgabe umleiten?

Gruß
colinardo
colinardo 11.07.2014 aktualisiert um 13:04:40 Uhr
Goto Top
Zitat von @killtec:
Kann ich das noch in eine Ausgabe umleiten?
yip, wenn du es in ein File umleiten willst, schreib am Ende folgendes rein.
$script:dirs | set-content 'C:\out.txt'
killtec
killtec 11.07.2014 um 13:07:48 Uhr
Goto Top
Danke dir face-smile
Teste das nachher und gebe eine Rückmeldung dazu.

Gruß
Gersen
Gersen 11.07.2014 aktualisiert um 20:36:12 Uhr
Goto Top
Gut - dann habe ich wohl die Aufgabe falsch verstanden...
iTesla
iTesla 12.07.2014 um 19:27:10 Uhr
Goto Top
.. ich verwende Everything Search Engine .. da es eine wirkliche rasant schnelle Suche ist ..
http://www.voidtools.com/