遍历所有子文件夹并创建一个txt文件

时间:2017-02-02 18:23:49

标签: batch-file

我试图编写循环遍历所有子文件夹的批处理脚本,然后在所有子文件夹中创建一个文本文件。该文本文件的文件名应该是子文件夹的名称。

实施例

的文件夹/文件夹1 / folder1.txt

文件夹2 /文件夹2 / folder2.txt

我试过这个,但是txt文件没有在子文件夹中创建,而是在主文件夹中创建。

set startdir="C:\Users\abc\folder"
FOR /F  %%a in ('dir /AD /B /S "%startdir%" ' ) do (
cd %%a
echo  %%a >%%a.txt
)

我哪里做错了什么?或者我知道如何做到这一点。对于这一批我是新手,如果我问过愚蠢的问题,那就很抱歉。

1 个答案:

答案 0 :(得分:0)

set "startdir=C:\Users\abc\folder"
for /d /r "%startDir%" %%a in (*) do >"%%~fa\%%~nxa.txt" echo(%%~nxa

在每个目录(/r "%startDir%")的指定文件夹(/d)下递归写入一个文件,其中包含目录名称和.txt扩展名(%%~nxa.txt)在目录的完整路径(%%~fa

note 阅读for /?的输出以获取允许选项的完整列表

或者,如果需要for /f(例如隐藏文件夹)

set "startdir=C:\Users\abc\folder"
for /f "delims=" %%a in ('
    dir /s /b /ad "%startDir%" 2^> nul 
') do >"%%~fa\%%~nxa.txt" echo(%%~nxa

已修改以适应评论。如果需要将活动目录更改为正在处理的目录,则

set "startdir=C:\Users\abc\folder"
for /d /r "%startDir%" %%a in (*) do (
    rem Change to the folder being processed
    pushd "%%~fa" 

    rem do whatever is needed
    > "%%~nxa.txt" echo echo(%%~nxa
    echo ....
    echo ....

    rem And before the iteration ends, restore 
    rem previous active directory
    popd
)