2016-04-18 11 views
0

I Ordnerstruktur haben:bat-Datei erhalten dir Pfad

Ordner "1", die "1.1" "1.2" "1.3" Ordner "1.1" enthält "1.1.1" "1.1.2"

Enthält

in der Fledermaus-Datei:

cd %folderDir% 
@echo off 
call :treeProcess 
goto :eos 

:treeProcess 

for /f "delims=" %%a IN ('dir /a:-d/b 2^>nul ') do echo "%%~fa" >>%pathDdfFile% 

for /D %%d in (*) do (
    echo %%d >>%pathDdfFile% 
echo %%d 
cd %%d 
    call :treeProcess 
    cd .. 


) 
goto :eof 

:eos 

cd \ 

ich:

1.1 
1.1.1 
1.1.2 
1.2 
1.3 

aber ich brauche:

1.1 
1.1\1.1.1 
1.1\1.1.2 
1.2 
1.3 

Antwort

0

Um eine Liste der Verzeichnisse zu erhalten, wie Sie es wünschen, können Sie dies tun:

@ECHO OFF 
SETLOCAL EnableDelayedExpansion 
FOR /F "delims=" %%G IN ('DIR /S /B /A:D /O:N ^| SORT') DO (
    SET tmp=%%G 
    ECHO !tmp:%CD%\=! 
) 

Dies wird, wenn 1 aus dem Ordner ausgeführt wird, geben Sie:

1.1 
1.1\1.1.1 
1.1\1.1.2 
1.2 
1.3 

Es funktioniert, indem das aktuelle Verzeichnis von der Ausgabe des Befehls DIR /S /B entfernt wird.

+0

Vielen Dank! Es ist großartig – liraz

0

Die einfachste Methode zum Abrufen von relativen Pfaden ist die Verwendung von xcopy /L, da für den Fall, dass ein relativer Quellpfad angegeben wird, Pfade relativ zum aktuellen Verzeichnis zurückgegeben werden. /L sagt eigentlich nicht zu kopieren:

xcopy /L /S /E /I /Y ".\*.*" "%TEMP%\" 

die Zusammenfassung Linie ?? File(s), ein einfaches find Befehl Um dies zu vermeiden, um herauszufiltern:

xcopy /L /S /E /I /Y ".\*.*" "%TEMP%\" | find ".\" 

Dies kann schließlich durch eine for /F Schleife analysiert werden Trog iterieren jeder einzelne Artikel:

for /F "delims=" %%I in (' 
    xcopy /L /S /E /I /Y ".\*.*" "%TEMP%\" ^| find ".\" 
') do (
    echo(%%I 
) 

Der große Vorteil dieser Methode besteht darin, dass das System die Pfadberechnungen durchführt, so dass Sie keinen zusätzlichen Code für etwas schreiben müssen, was das System sowieso schon für Sie tun kann.
Es sind also keine Stringmanipulationsaktivitäten erforderlich, eine verzögerte Erweiterung ist nicht erforderlich, was die Gesamtperformance verringert und sogar in speziellen Fällen fehleranfällig sein kann.