我有一个问题 如何在文件夹中循环,只显示没有完整路径的文件夹及其子文件夹。
示例 如果我使用dir / b / s / ad 我会看到e:\ Mainfolder \ Folder1 \ Subfolder
我只想看到 文件夹1 \子文件夹
我想要它的原因是我可以把它放在一个txt字段然后用另一个循环检查文件夹/子文件夹是否存在于其他地方,如果没有则需要创建它。
亲切的问候,
Thomas de Vries
答案 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文件