我试图让批处理文件只将文件夹和子文件夹的短名称输出到文件中。但是,通过下面的例子,我只能得到完整路径。

DIR /S /B /O:N /A:D > FolderList.txt

它将输出:
X:\Example\Folder 1
X:\Example\Folder 2
X:\Example\Folder 3
X:\Example\Folder 1\Sub-Folder 1
X:\Example\Folder 1\Sub-Folder 2
X:\Example\Folder 2\Sub-Folder 1

当所需输出为:
Folder 1
Folder 2
Folder 3
Folder 1\Sub-Folder 1
Folder 1\Sub-Folder 2
Folder 2\Sub-Folder 1

这个问题伴随着/S开关,它允许DIR命令递归到子文件夹中。
有没有一种简单的方法,只使用windows批处理文件,将当前目录中的文件夹和子文件夹列表输出到文本文件?

最佳答案

@ECHO OFF
FOR /f "delims=" %%a IN ('DIR /S /B /O:N /A:D') DO (
 SET "name=%%a"
 SETLOCAL ENABLEDELAYEDEXPANSION
 ECHO(!name:%cd%\=!
 endlocal
)

GOTO :EOF

因为你要的是“短名字”,然后描述的是“相对名字”,所以让人有点困惑。
很明显,name只是屏幕上的echoed。你知道如何重定向。

关于windows - Windows批处理文件-显示所有文件夹和子文件夹的相对路径,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40695211/

10-13 07:39