命令行列出子文件夹中的文件但不列出当前文件夹

命令行列出子文件夹中的文件但不列出当前文件夹

我有一个批处理文件,它提供了当前文件夹和子文件夹中所有文件的目录列表。我想将其更改为列出子文件夹中的所有文件,但是不是当前文件夹。目前我正在使用下面的命令,它可以成功列出当前文件夹和子文件夹中的所有文件。

cd "c:\temp"
dir  /s/b *.doc>c:\temp\mylist.txt

产生的结果如下:

c:\temp\test8.doc
c:\temp\test9 (2).doc
c:\temp\test9.doc
c:\temp\012015\blah_012340.doc
c:\temp\032016\blah_124756.doc
c:\temp\042016\blah_125230.doc
c:\temp\052016\blah_052647.doc

我希望我的结果不显示 c:\temp 中直接的内容,因此我想要的结果是:

c:\temp\012015\blah_012340.doc
c:\temp\032016\blah_124756.doc
c:\temp\042016\blah_125230.doc
c:\temp\052016\blah_052647.doc

答案1

这应该可行

for /f "delims=" %5  in ('dir /a:d /b') do dir /b /s  "%5"

以下是这句话的详细内容。

for /f用于循环显示项目列表。

"delims="将分隔符设置为无,以便将每行视为单个短语。默认情况下,空格将被视为分隔符。

%5是变量。

in ('dir /a:d /b')这将获取目标文件夹的目录列表。

do dir /b /s "%5"在这里您可以定义您的操作do,然后是命令,最后是变量%5作为参数。

请注意,当您从批处理文件运行此文件时,您必须使用%%5

for /f "delims=" %%5 in ('dir /a:d /b') do dir /b /s "%%5"

希望这可以帮助。

谢谢

相关内容