使用批处理文件在每个子目录中的文件名列表

时间:2014-03-23 21:02:38

标签: batch-file cmd subdirectory

我有很多子目录,即sub1,sub2,sub3,sub4等等。

我想在每个子目录中只保存文件名,但是使用位于主目录即DIR1的批处理文件。

我知道这段代码:DIR /B /ON *.txt > filelist.txt

但是这段代码将文件名保存在同一个文件夹中,即sub1,我希望DIR1文件夹批处理文件执行只能在每个子目录中保存文件名的程序。

例如:

+Main Directory(DIR1 folder)

execute.bat

++Sub1 folder:

mu1111.txt 

++sub2 folder:

mu2222.txt

++sub3 folder:

mu3333.txt

当我运行execute.bat时,输出将显示如下:

+Main Directory(DIR1 folder)

execute.bat

++Sub1 folder:

mu1111.txt 

filelist.txt

++sub2 folder:

mu2222.txt

filelist.txt

++sub3 folder:

mu3333.txt

filelist.txt

另外,我希望此代码不会在子目录的文件夹中执行。

3 个答案:

答案 0 :(得分:1)

也许尝试使用tree命令和/f开关,以便列出文件名:

tree /f

输出如下:

Output looks like this

答案 1 :(得分:1)

for /d /r "c:\Main Directory\DIR1" %%a in (*) do (
    >"%%~fa\filelist.txt" dir /on /b /a-d "%%~fa\*"
)

对于每个文件夹(/d),递归地在指定的根目录(/r)下,对相应文件夹内的filelist.txt文件执行文件夹内容的dir命令。

答案 2 :(得分:0)

这旨在在每个子目录中创建filelist.txt

@echo off
cd /d "c:\Main Directory\DIR1"
   for /d %%a in (*) do (
       DIR /B /ON /A-D "%%a\*.txt" > filelist.txt.
       move filelist.txt "%%a" >nul
   )