2014-05-22 52 views
0

我有問題 如何循環瀏覽文件夾並僅顯示沒有完整路徑的文件夾及其子文件夾。僅顯示導演及其子目錄

例如 如果我使用DIR/B/S /廣告 我會看到E:\ Mainfolder \ Folder1中\的子文件夾

,我只whant看到 Folder1中\的子文件夾

我想原因它是這樣,我可以把它放入一個txt字段,然後用另一個循環檢查文件夾/子文件夾是否存在其他地方,如果不是,那麼它需要創建它。

隨着親切的問候,

托馬斯·德弗里斯

+0

結構是否一致?或者它可能是'e:\ MainFolder \ Folder1 \ Subfolder \ SubSubfolder \ etc \' – Alex

+0

該結構可能會改變,導致人員可以添加或刪除一個目錄及其子目錄。 –

+0

你怎麼知道你想消除的路徑部分?它總是'「e:\ Mainfolder」'?這是當前目錄嗎? – Aacini

回答

0
@echo off 

    setlocal enableextensions disabledelayedexpansion 

    set "startingFolder=%cd%" 

    :: Determine the length of the starting path to remove 
    :: it from output 
    for /d %%a in ("%startingFolder%\" 
    ) do for /f "skip=1 tokens=1 delims=:" %%b in (
     '(echo(%%~fa^&echo(^)^|findstr /o "^"' 
    ) do set /a "cutPoint=%%b-3" 

    :: Recurse folders from starting point and echo the 
    :: full path without the starting folder 
    for /r "%startingFolder%" /d %%a in (*) do (
     set "line=%%a" 
     setlocal enabledelayedexpansion 
     echo(!line:~%cutPoint%! 
     endlocal 
    ) 

這將在遞歸樹結構,開始在指定的文件夾中(其他城市startingFolder變量你需要什麼)。對於找到的每個文件夾,其相對路徑都會回傳給控制檯。批量重定向輸出生成所需的.txt文件

+0

謝謝你。 –

0
@echo off 
setlocal EnableDelayedExpansion 

for /F "delims=" %%a in ('dir /b /s /ad') do (
    set "name=%%a" 
    echo !name:*e:\Mainfolder\=! 
) 
相關問題