mrroyal
Goto Top

Anzahl Ordner auflisten

Hallo zusammen,

ich benötige eine Möglichkeit um aus einer Liste an Datei-Ordner (001,002,003 etc.), nur die Ordner herauszufiltern, die eine bestimmte Datei enthalten.

Dabei kann die Datei unterschiedlich benannt sein, jedoch hat diese immer ein und denselben Ausdruck innerhalb der Dateibezeichnung.

Beispiel:
Datei 1 in Ordner 001 -> Blablabla.0.pdf
Datei 2 in Ordner 002-> TestTest.0.pdf
Datei 3 in Ordner 003 -> Zeichnung.pdf
Datei 4 in Ordner 004 -> Anleitung.bmp
.
.
etc.

Jetzt soll nach dem Ausdruck "0.pdf" gesucht werden und jede Datei mit diesem Ausdruck soll erkannt werden.

Dabei soll als Ergebnis nur eine Textdatei mit der Auflistung der Überordner erstellt werden.

Also:
001
002

Ich hoffe ihr versteht meine Aussage.

Danke und Gruß

MrRoyal

Content-Key: 489348

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

Ausgedruckt am: 28.03.2024 um 17:03 Uhr

Mitglied: 140913
140913 28.08.2019 aktualisiert um 13:51:58 Uhr
Goto Top
Powershell:
$basefolder = 'D:\Root'  
$log = 'D:\out\log.txt'  
$folders = '001','002','003'  
$folders | ?{Test-Path "$basefolder\$_\*0.pdf"} | %{$_ | out-file $log -Append}  
Mitglied: MrRoyal
MrRoyal 28.08.2019 um 14:04:42 Uhr
Goto Top
Danke psuser,

ich verstehe nicht ganz wie ich das mit PowerShell löse.
Habe bisher alles nur per Batch oder VBS gemacht.

Einfach in normalen Texteditor abspeichern? Unter welcher Endung *.*?

Muss ich unter $folders alle Ordner manuell angeben? Das wären über 2000 Stück.
Kann ich nicht das $basefolder durchsuchen lassen nach allen möglichen Unterordnern?

Danke für deine Rückmeldung!

Gruß

MrRoyal
Mitglied: 140913
140913 28.08.2019 aktualisiert um 14:10:57 Uhr
Goto Top
OMG
https://www.google.com/search?q=Powershell+ausf%C3%BChren
Muss ich unter $folders alle Ordner manuell angeben? Das wären über 2000 Stück.
Musst du nicht, das geht natürlich, deine Beschreibung oben ließ das leider nicht vermuten:
$basefolder = 'D:\Root'  
$log = 'D:\out\log.txt'  
gci $basefolder -Directory | ?{Test-Path "$($_.Fullname)\*0.pdf"} | %{$_.Name | out-file $log -Append}  
Mitglied: MrRoyal
MrRoyal 28.08.2019 um 15:21:21 Uhr
Goto Top
Dein Vorschlag scheint zu funktionieren, leider nicht auf unseren Systemen da dort PowerShell sicherheitshalber deaktiviert wurde über eine Gruppenrichtlinie.

Gibt es die Möglichkeit das ganze über VBS zu machen?

Danke
Mitglied: 140913
140913 28.08.2019 um 16:07:40 Uhr
Goto Top
Gibt es die Möglichkeit das ganze über VBS zu machen?
Ja
Mitglied: MrRoyal
MrRoyal 28.08.2019 um 16:09:44 Uhr
Goto Top
Och Mensch...hab ich dich verärgert? War nicht mein Vorhaben.
Kannst du mir nen Tipp geben?

Danke
Mitglied: 140913
Lösung 140913 28.08.2019 aktualisiert um 16:18:23 Uhr
Goto Top
Zitat von @MrRoyal:

Och Mensch...hab ich dich verärgert? War nicht mein Vorhaben.
??
Kannst du mir nen Tipp geben?
Const BASEFOLDER = "D:\Basefolder"  
Const LOGFILE = "D:\result.txt"  
strSearch = "0.pdf"  

Set fso = CreateObject("Scripting.FileSystemObject")  
Set objShell = CreateObject("Wscript.Shell")  
Set f = fso.OpenTextFile(LOGFILE,2,True)

For Each folder In fso.GetFolder(BASEFOLDER).SubFolders
	For Each file In folder.Files
		If LCase(Right(file.Name,Len((strSearch)))) = LCase(strSearch) Then
			f.WriteLine folder.Name
			Exit For
		End If
	Next
Next
f.Close

objShell.Run LOGFILE,1,False
Danke
Bidde.
Mitglied: 140913
Lösung 140913 01.09.2019 um 11:54:50 Uhr
Goto Top
Bitte dann noch als gelöst markieren.