我试图编写循环遍历所有子文件夹的批处理脚本,然后在所有子文件夹中创建一个文本文件。该文本文件的文件名应该是子文件夹的名称。
实施例
的文件夹/文件夹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
)
我哪里做错了什么?或者我知道如何做到这一点。对于这一批我是新手,如果我问过愚蠢的问题,那就很抱歉。
答案 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
)