找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 17656|回复: 14

[文件操作] 如何批处理提取子文件夹名称?

[复制链接]
发表于 2024-6-21 13:47:30 | 显示全部楼层 |阅读模式
本帖最后由 228630386 于 2024-6-27 09:48 编辑

文件有A、B、C、D等多个文件夹,目录下有多个子文件夹,如何批量提取子文件夹名称在TXT中?

A目录下有:
111165565664
546498789454
454789784454

B目录下有:
546464212131
646484212131
454554812121

C目录下有:
065656545455
656532326556
565656565656
565656565689

以此类推,生成结果即多个子文件夹名称生成TXT中,如下:
111165565664
546498789454
454789784454
546464212131
646484212131
454554812121
065656545455
656532326556
565656565656
565656565689
发表于 2024-6-21 15:37:53 | 显示全部楼层
本帖最后由 aloha20200628 于 2024-6-21 15:40 编辑

回复 1# 228630386

假设当前目录有直属目录a,b,c,d等,以下代码存为test.bat,置于当前目录中运行,结果将获取这些直属目录所包含的全部子目录名列表至 "子目录名列表.txt"

  1. @echo off
  2. (for /d %%D in (*) do for /f "delims=" %%d in (' dir /b/s/ad "%%D" ') do echo,%%~nxd)>"子目录名列表.txt"
  3. exit/b
复制代码
发表于 2024-6-21 22:13:15 | 显示全部楼层
回复 1# 228630386
這樣的效果嗎?

  1. for /d /r %%i IN (*) do echo %%~ni  >>list.txt
复制代码
发表于 2024-6-21 23:34:49 | 显示全部楼层
回复 1# 228630386


    直接 tree >list.txt 不就可以了嘛
 楼主| 发表于 2024-6-27 09:45:50 | 显示全部楼层
回复 3# dreamer


    运行之后只生成TXT,没有结果的?
发表于 2024-6-27 10:13:29 | 显示全部楼层
  1. @echo off
  2. (for /f "delims=" %%i in ('dir /b /ad') do (
  3.     pushd "%%i"
  4.     for /f "delims=" %%j in ('dir /b /ad') do (
  5.         echo,%%j
  6.     )
  7.     popd
  8. ))>123.txt
复制代码
发表于 2024-6-27 15:09:27 | 显示全部楼层
本帖最后由 aloha20200628 于 2024-6-27 15:52 编辑

回复 1# 228630386

2楼代码再简化一步...

  1. @echo off
  2. (for /d %%D in (*) do for /d %%d in ("%%D\*") do echo,%%~nxd)>"子目录名列表.txt"
  3. pause&exit/b
复制代码
发表于 2024-6-27 17:31:11 | 显示全部楼层
保存为bat文件,与ABC文件夹放在一起。
脚本只罗列ABC文件夹下的一级子目录,不再罗列111165565664等数字文件夹下的目录
  1. @echo off
  2. (for /d %%D in (*) do for /f "delims=" %%d in ('dir /b /ad "%%D"') do echo,%%~nxd)>"子目录列表.txt"
  3. exit /b
复制代码
 楼主| 发表于 2024-6-28 12:42:21 | 显示全部楼层
回复 8# ppll2030


    为什么运行后没有反应的。
 楼主| 发表于 2024-6-28 12:43:37 | 显示全部楼层
回复 7# aloha20200628


    生成的结果还是有链接在TXT里的。
发表于 2024-6-28 12:53:21 | 显示全部楼层
本帖最后由 ppll2030 于 2024-6-28 13:19 编辑

回复 9# 228630386


    直接生成 子目录列表.txt 了。

 楼主| 发表于 2024-6-28 14:05:42 | 显示全部楼层
回复 11# ppll2030


    生成TXT文件后,目录是有链接的。
 楼主| 发表于 2024-6-28 16:31:31 | 显示全部楼层
回复 11# ppll2030


    奇怪了,我生成的效果不是你GIF哪样。
发表于 2024-6-28 16:40:02 | 显示全部楼层
如果使用管理员权限执行,而未切换工作路径,测试没有得到结果。如果使用 for /d 则不能获取 含有隐藏属性的文件夹。

以下代码保存为ansi或者utf-8。如果不行,可尝试右键使用管理员权限执行。
  1. @echo off
  2. cd /d "%~dp0"
  3. (for /f "delims=" %%d in ('dir /b /ad') do (
  4.         for /f "delims=" %%e in ('dir /b /ad "%%d\*"') do (
  5.                 echo %%e
  6.         )
  7. ))>"list.txt"
  8. pause
复制代码
发表于 2024-6-28 16:46:18 | 显示全部楼层
本帖最后由 aloha20200628 于 2024-6-28 17:14 编辑

回复 10# 228630386

假设a,b,c,d等目录均在 d:\test 主目录下,请把7楼的批处也放在 d:\test 这个主目录下运行,即可获得一楼示例的结果
7楼代码已用一楼示例的目录结构测试通过
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 22:16 , Processed in 0.021035 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表