[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

本帖最后由 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

本帖最后由 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
复制代码

TOP

回复 1# 228630386
這樣的效果嗎?
  1. for /d /r %%i IN (*) do echo %%~ni  >>list.txt
复制代码

TOP

回复 1# 228630386


    直接 tree >list.txt 不就可以了嘛

TOP

回复 3# dreamer


    运行之后只生成TXT,没有结果的?

TOP

  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
复制代码

TOP

本帖最后由 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
复制代码

TOP

保存为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
复制代码

TOP

回复 8# ppll2030


    为什么运行后没有反应的。

TOP

回复 7# aloha20200628


    生成的结果还是有链接在TXT里的。

TOP

本帖最后由 ppll2030 于 2024-6-28 13:19 编辑

回复 9# 228630386


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

TOP

回复 11# ppll2030


    生成TXT文件后,目录是有链接的。

TOP

回复 11# ppll2030


    奇怪了,我生成的效果不是你GIF哪样。

TOP

如果使用管理员权限执行,而未切换工作路径,测试没有得到结果。如果使用 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
复制代码
bat小白,请多指教!谢谢!

TOP

本帖最后由 aloha20200628 于 2024-6-28 17:14 编辑

回复 10# 228630386

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

TOP

返回列表