![命令行列出子文件夹中的文件但不列出当前文件夹](https://linux22.com/image/1512272/%E5%91%BD%E4%BB%A4%E8%A1%8C%E5%88%97%E5%87%BA%E5%AD%90%E6%96%87%E4%BB%B6%E5%A4%B9%E4%B8%AD%E7%9A%84%E6%96%87%E4%BB%B6%E4%BD%86%E4%B8%8D%E5%88%97%E5%87%BA%E5%BD%93%E5%89%8D%E6%96%87%E4%BB%B6%E5%A4%B9.png)
我有一个批处理文件,它提供了当前文件夹和子文件夹中所有文件的目录列表。我想将其更改为列出子文件夹中的所有文件,但是不是当前文件夹。目前我正在使用下面的命令,它可以成功列出当前文件夹和子文件夹中的所有文件。
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"
希望这可以帮助。
谢谢