Verzeichnis mit Unterverzeichnisse ausgeben - V-Tiefe bestimmen oder bzw und keine Dateien
Verzeichnis mit Unterverzeichnisse ausgeben 1. selbst Festlegen bis zu welcher Verzeichnis-Tiefe 2. Oder bzw. und bei allen Unterverzeichnissen (wie dir /s) ohne Dateien.
Hallo,
möchte die Verzeichnisse meiner Foto-Sammlung ausgeben um so verglkeichen zu können, ob z.B. auf einer HDD alle Alben kopiert wurden und für einige anderen Sachen. Doch wie kann ich die Verzeichnis-Tiefe bestimmen oder/und Dateien weg lassen?
Hallo zusammen,
habe das Problem, dass ich ein paar Sammlungen auf meinen Festplatten habe. So zum Beispiel auch für meine eigenen Fotos. Sortiert sind sie so:
- Sammlung
--> aus dem Jahr 2012
> 2012-01-01Silvester-2011-auf-2012
> 2012-05-07-Geburtstag-von-XYZ
> 2012-08-06-Urlaubsbilder-Sommer-2012
> und so weiter
--> aus dem Jahr 2011
> 2011-01-01Silvester-2010-auf-2011
> 2011-05-07-Geburtstag-von-XYZ
> 2011-08-06-Urlaubsbilder-Sommer-2012
> und so weiter
- Scans und eingelesene Bilder
- Sonstige Bilder
- und so weiter
Teilweise gibt es zu den "Ereignis-Alben" auch noch Unteralben, zum Beispiel wenn ich eine andere Bildauflösung brauchte oder etwas nachgearbeitet wurde.
Habe nun das Problem, dass ich mir alle Verzeichnisse mit Unterverzeichnissen ausgeben möchte. In der Regel ist das ja in der Konsole (cmd) mit dem Befehl dir /s möglich und ich kan mir das auch in eine Textdatei schreiben lassen (dir >> Uebersicht-meiner-Fotos-stand-2012-12-01.txt /s)
Mein Problem dabei ist, dass dann aber auch alle Dateien aufgelistet werden. Jene brauche ich aber nicht. Zwar kann ich zum Beispiel die Funktion "Suchen und Ersetzen" nutzen, und jeden Eintrag mit *.jpg entfernen oder durch Leerzeichen ersetzen, aber so wirklich klappt das auch nicht.
Daher suche ich eine Möglichkeit, wie ich in einem Verzeichnis alle Unterverzeichnisse ausgeben kann und selber dabei die Verzeichnis-Tiefe bestimmen kann.
Über einen Tipp, Script, Hilfe würde ich mich sehr freuen!
Liebe Grüße
Tobias
Hallo,
möchte die Verzeichnisse meiner Foto-Sammlung ausgeben um so verglkeichen zu können, ob z.B. auf einer HDD alle Alben kopiert wurden und für einige anderen Sachen. Doch wie kann ich die Verzeichnis-Tiefe bestimmen oder/und Dateien weg lassen?
Hallo zusammen,
habe das Problem, dass ich ein paar Sammlungen auf meinen Festplatten habe. So zum Beispiel auch für meine eigenen Fotos. Sortiert sind sie so:
- Sammlung
--> aus dem Jahr 2012
> 2012-01-01Silvester-2011-auf-2012
> 2012-05-07-Geburtstag-von-XYZ
> 2012-08-06-Urlaubsbilder-Sommer-2012
> und so weiter
--> aus dem Jahr 2011
> 2011-01-01Silvester-2010-auf-2011
> 2011-05-07-Geburtstag-von-XYZ
> 2011-08-06-Urlaubsbilder-Sommer-2012
> und so weiter
- Scans und eingelesene Bilder
- Sonstige Bilder
- und so weiter
Teilweise gibt es zu den "Ereignis-Alben" auch noch Unteralben, zum Beispiel wenn ich eine andere Bildauflösung brauchte oder etwas nachgearbeitet wurde.
Habe nun das Problem, dass ich mir alle Verzeichnisse mit Unterverzeichnissen ausgeben möchte. In der Regel ist das ja in der Konsole (cmd) mit dem Befehl dir /s möglich und ich kan mir das auch in eine Textdatei schreiben lassen (dir >> Uebersicht-meiner-Fotos-stand-2012-12-01.txt /s)
Mein Problem dabei ist, dass dann aber auch alle Dateien aufgelistet werden. Jene brauche ich aber nicht. Zwar kann ich zum Beispiel die Funktion "Suchen und Ersetzen" nutzen, und jeden Eintrag mit *.jpg entfernen oder durch Leerzeichen ersetzen, aber so wirklich klappt das auch nicht.
Daher suche ich eine Möglichkeit, wie ich in einem Verzeichnis alle Unterverzeichnisse ausgeben kann und selber dabei die Verzeichnis-Tiefe bestimmen kann.
Über einen Tipp, Script, Hilfe würde ich mich sehr freuen!
Liebe Grüße
Tobias
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 195232
Url: https://administrator.de/contentid/195232
Ausgedruckt am: 22.11.2024 um 16:11 Uhr
2 Kommentare
Neuester Kommentar
Hallo Tobias,
über Rekursion sollte das machbar sein.
Grüße
rubberman
über Rekursion sollte das machbar sein.
@echo off &setlocal
set "root=C:\meine bunten Bilder"
set /a "currDepth = 0, maxDepth = 2"
>"out.log" (call :tree "%root%" %currDepth%)
goto :eof
:tree
setlocal DisableDelayedExpansion
pushd "%~1"
set /a "currDepth += 1"
setlocal EnableDelayedExpansion
set "spcs="
for /l %%i in (1,1,%~2) do set "spcs=!spcs! "
endlocal &set "spcs=%spcs%"
for /f "delims=" %%i in ('dir /ad /b') do (
echo %spcs%%%i
if %currDepth% leq %maxDepth% call :tree "%%~i" %currDepth%
)
popd
endlocal
goto :eof
Grüße
rubberman
Hallo Tobias,
von mir noch eine Lösung in VBScript:
Aufruf:
Die Parameter
Vezeichnisse, bei denen die Attribute
Gruß
Friemler
von mir noch eine Lösung in VBScript:
Set colArguments = WScript.Arguments
Set objFSO = CreateObject("Scripting.FileSystemObject")
If colArguments.Count > 2 Then
strBaseFolder = objFSO.GetAbsolutePathName(colArguments(0))
intMaxDepth = CInt(colArguments(1))
intType = CInt(colArguments(2))
If objFSO.FolderExists(strBaseFolder) Then
Select Case intType
Case 1 TraverseTree1 strBaseFolder, 1
Case 2 TraverseTree2 strBaseFolder, 1
Case Else WScript.StdErr.WriteLine "Unbekannter Ausgabetyp."
End Select
Else
WScript.StdErr.WriteLine "Pfad nicht gefunden."
End If
Else
WScript.StdErr.WriteLine "Fehlende Parameter."
End If
Sub TraverseTree1(strFolder, intDepth)
On Error Resume Next
Dim objFolder, objSubFolder
Set objFolder = objFSO.GetFolder(strFolder)
For Each objSubFolder In objFolder.SubFolders
If Not (objSubFolder.Attributes And &H0406) > 0 Then
WScript.Echo Space((intDepth - 1) * 2) & objSubFolder.Name
If intDepth < intMaxDepth Then TraverseTree1 objSubFolder.Path, intDepth+1
End If
Next
End Sub
Sub TraverseTree2(strFolder, intDepth)
On Error Resume Next
Dim objFolder, objSubFolder
Set objFolder = objFSO.GetFolder(strFolder)
For Each objSubFolder In objFolder.SubFolders
If Not (objSubFolder.Attributes And &H0406) > 0 Then WScript.Echo objSubFolder.Path
Next
If intDepth < intMaxDepth Then
For Each objSubFolder In objFolder.SubFolders
If Not (objSubFolder.Attributes And &H0406) > 0 Then TraverseTree2 objSubFolder.Path, intDepth+1
Next
End If
End Sub
Aufruf:
cscript /nologo "ScriptName.vbs" "Basisverzeichnis" Tiefe Ausgabetyp
Die Parameter
Basisverzeichnis
und Tiefe
sollten klar sein. Über den Parameter Ausgabetyp
kann gesteuert werden, ob die Verzeichnisstruktur in Baumform ausgegeben wird (Ausgabetyp
=1, sieht so ähnlich wie die Ausgabe von rubbermans Script aus) oder ob eine verzeichnisweise Liste aller Ordner (Ausgabetyp
=2) ausgegeben wird.Vezeichnisse, bei denen die Attribute
Hidden
oder System
gesetzt sind oder die nur ein NTFS-Link auf ein Verzeichnis sind, werden nicht verarbeitet.Gruß
Friemler