给定以下目录
D:\>dir D:\test1 /b
.dir1dot
.dir2dot
dir1
dir2
file1.txt
file2.txt
我想遍历给定目录中的所有目录Windows 10。因此我创建了以下命令
D:\>for /d %i in (D:\test1\*) do @echo %i
D:\test1\.dir1dot
D:\test1\.dir2dot
D:\test1\dir1
D:\test1\dir2
现在我想获取目录的名称。即:
.dir1dot
.dir2dot
dir1
dir2
我尝试执行以下操作,但发生了以下情况:
D:\> for /d %i in (D:\test1\*) do @echo %~ni
ECHO is on.
ECHO is on.
dir1
dir2
因此,问题是我怎样才能仅显示给定目录中的目录名称?
答案1
使用
%~nxi
替换也包含文件扩展名,因为这会获取.
名为文件夹的前缀。您仍然可以确保不会迭代任何文件,因为FOR /D
只处理目录。for /d %i in (D:\test1\*) do @echo %~nxi .dir1dot .dir2dot dir1 dir2
此外,您还可以使用对于/f循环迭代输出目录带有
/B
和/AD
参数的命令仅获取目录而不获取文件,并获取每次迭代的完整路径(包括.
前缀名为文件夹)。仅限目录名称
for /f "tokens=*" %F IN ('DIR D:\test1 /AD /B') do @echo %F .dir1dot .dir2dot dir1 dir2
完整路径目录名称
for /f "tokens=*" %F IN ('DIR D:\test1 /AD /B') do @echo %~fF D:\test1\.dir1dot D:\test1\.dir2dot D:\test1\dir1 D:\test1\dir2
支持资源
答案2
答案3
您可以在一个循环中使用和:for /Directory
for /Recursive
for /Directory for /Recursive
为了/d /r “E:\你的文件夹”%i 在 (*)do @echo\%~nxi