Wie kann ich in einer Textdatei die Verzeichnisse mehrerer Ordner für jeden einzelnen Ordner auflisten?

Wie kann ich in einer Textdatei die Verzeichnisse mehrerer Ordner für jeden einzelnen Ordner auflisten?

Ich habe mehrere Dutzend Ordner mit mehreren Dateien darin und habe mich gefragt, wie (oder ob es möglich ist) ich den Inhalt jedes Ordners in einer Textdatei wiedergeben kann, zum Beispiel mitdir > INDEX.txtmit einer Batchdatei oder über die Befehlszeile.

Ich weiß, dass die AusführungFOR /D %A IN (X:\Zielordner*.*) DO (DIR >> INDEX.TXT "%A\")erhält eine Textdatei im übergeordneten Verzeichnis mit allen Ordnern und deren Inhalt, aber kann ich für jeden Ordner einen eigenen Index erstellen? Oder verlange ich zu viel von Batch-Skripten?

Ich bin nicht sicher, ob das wichtige Informationen sind, aber ich verwende Windows 10. Ich bin für jede Hilfe sehr dankbar.

Antwort1

Ich bin nicht ganz sicher, wonach Sie hier suchen, aber das hier zusammenzustellen hat mehr Spaß gemacht als zu arbeiten:

@echo off

set "dir=C:\Your\Top\Folder"

del /f /q "%dir%\index.txt"

if exist "%dir%" (
    echo(
    echo Report for:
    echo %dir%
    echo(
    echo Subfolders:
    dir /a:d /o:n /b "%dir%"
    echo(
    echo Files:
    dir /a:-d /o:n /b "%dir%"
    echo(
    echo \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
)>>"%dir%\index.txt"

for /d /r "%dir%" %%A in (*) do (
    echo(
    echo Report for:
    echo %%A
    echo(
    echo Subfolders:
    dir /a:d /o:n /b "%%A"
    echo(
    echo Files:
    dir /a:-d /o:n /b "%%A"
    echo(
    echo \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
)>>"%dir%\index.txt"

Natürlich können Sie jeden Teil davon behalten/verwerfen/ändern, damit Ihre Ausgabedatei so aussieht, wie Sie es möchten – dies soll Ihnen also nur eine Vorstellung geben. Dadurch wird eine dirVariable als Ihr oberster Ordner festgelegt, damit wir die Dinge einfacher ändern können. Dies if existist nur dazu da, die dirAusgabe für diesen obersten Ordner abzurufen – andernfalls haben wir einen for /d /rBefehl, der ihn rekursiv durchläuft. Das Ausgabelayout ist eine persönliche Vorliebe, basierend darauf, was ich am ansprechendsten fand (ohne mir zu viele Gedanken darüber zu machen), nachdem ich dies durch mehrere Stellen durchlaufen habe. Sie werden feststellen, dass nach dem Festlegen der dirVariablen das erste, was der Batch tut, die Indexdatei löscht, damit ich dies nicht jedes Mal manuell tun muss, wenn ich sie überprüfe – andernfalls >>werden einfach mehrere Durchläufe bis zum Ende wiederholt.

Wenn Sie eine separate Indexdatei wünschen fürjedeUnterordner müssen Sie lediglich die verzögerte Erweiterung aktivieren und den Hauptteil der forSchleife wie folgt verschachteln:

setlocal enabledelayedexpansion
for /d /r "%dir%" %%A in (*) do (
    set "name=%%~nA"
    (echo(
    echo Report for:
    echo %%A
    echo(
    echo Subfolders:
    dir /a:d /o:n /b "%%A"
    echo(
    echo Files:
    dir /a:-d /o:n /b "%%A"
    echo(
    echo \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\)>>"%dir%\!name! index.txt"
)

Dadurch erhalten Sie eine separate Textdatei mit dem Namen des Ordners ( %%~nA) im Titel jedes Ordners. Wenn Sie faul sind wie ich und die einzelnen Indexdateien vor dem Ausführen löschen möchten,NWenn Sie die Variable mehrmals setzen, können Sie if exist "%dir%\!name! index.txt" del /f /q "%dir%\!name! index.txt"unmittelbar nach dem Setzen namein der Schleife eine .js-Anweisung ausführen, die ich auch in einen Block einfügen könnte:

for /d /r "%dir%" %%A in (*) do (
    set "name=%%~nA"
    if exist "%dir%\!name! index.txt" del /f /q "%dir%\!name! index.txt"
    (echo(

Lassen Sie mich wissen, ob Sie nach etwas völlig anderem gesucht haben oder ob dies überhaupt hilfreich war.

Verweise:dirUndfür.

verwandte Informationen