批处理仅显示目录及其子目录

时间:2014-05-22 05:18:04

标签: batch-file

我有一个问题 如何在文件夹中循环,只显示没有完整路径的文件夹及其子文件夹。

示例 如果我使用dir / b / s / ad 我会看到e:\ Mainfolder \ Folder1 \ Subfolder

我只想看到 文件夹1 \子文件夹

我想要它的原因是我可以把它放在一个txt字段然后用另一个循环检查文件夹/子文件夹是否存在于其他地方,如果没有则需要创建它。

亲切的问候,

Thomas de Vries

2 个答案:

答案 0 :(得分:0)

@echo off
setlocal EnableDelayedExpansion

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

答案 1 :(得分: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文件