我有一个批处理文件,它提供了当前文件夹和子文件夹中所有文件的目录列表。我想将其更改为列出子文件夹中的所有文件,但是不是当前文件夹。目前我正在使用下面的命令,它可以成功列出当前文件夹和子文件夹中的所有文件。
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"
希望这可以帮助。
谢谢