Board logo

标题: [文本处理] [已解决]批处理怎样读取文件夹名称并导出? [打印本页]

作者: luckcsz    时间: 2019-6-1 14:12     标题: [已解决]批处理怎样读取文件夹名称并导出?

本帖最后由 luckcsz 于 2019-6-5 02:21 编辑

只读取运用层及下属子文件夹的所有文件夹名称,顺序和电脑顺序的一样导出,谢谢大佬们~!
例如
A文件夹,A文件夹下的文件夹等等,A文件夹-A文件夹下的文件名等,还有子文件夹以此导出 A文件夹-下属文件夹名称-下属文件夹名称 ,间隔用 “-”
B文件夹 只有一个就读取一个
C文件夹等等
1
2
3
4
5
6
7
8
9
10
11 文件夹顺序按电脑顺序
作者: luckcsz    时间: 2019-6-1 23:34

无人理会,是太简单了还是太难了~?
作者: /zhqsystem/zhq    时间: 2019-6-2 00:41

SetLocal EnableDelayedExpansion
(for /f "delims=" %%i in ('dir/a-d/s/b *.*')do if /i not "%~f0"=="%%~fi" (
set "$=%%~fi"
set "$=!$:%~dp0=!"
set "$=!$:\=-!"
echo,!$!
))>1.txt
作者: luckcsz    时间: 2019-6-2 00:56

回复 3# /zhqsystem/zhq


    点击批处理来不行哦
作者: luckcsz    时间: 2019-6-2 00:58

回复 3# /zhqsystem/zhq


    只要文件夹名称,在哪层运行就在哪层开始读取,上层文件夹名称不需要
作者: luckcsz    时间: 2019-6-2 00:59

回复 3# /zhqsystem/zhq


    还请老师有空重新看下
作者: luckcsz    时间: 2019-6-2 01:05

本帖最后由 luckcsz 于 2019-6-2 01:09 编辑

回复 5# luckcsz


    运行后所得

D:\子文件夹查看\AAA-001-00023>if /I not "D:\子文件夹查看\AAA-001-00023\读取文件夹名称.bat" == "D:\子文件夹查看\AAA-001-00023\1.txt" (
set "$=D:\子文件夹查看\AAA-001-00023\1.txt"  
set "$=!$:\子文件夹查看\AAA-001-00023\=!"  
set "$=!$:\=-!"  
echo,!$!
)
1.txt

D:\子文件夹查看\AAA-001-00023>if /I not "D:\子文件夹查看\AAA-001-00023\读取文件夹名称.bat" == "D:\子文件夹查看\AAA-001-00023\读取文件夹名称.bat" (
set "$=D:\子文件夹查看\AAA-001-00023\读取文件夹名称.bat"  
set "$=!$:D:\子文件夹查看\AAA-001-00023\=!"  
set "$=!$:\=-!"  
echo,!$!
)

D:\子文件夹查看\AAA-001-00023>if /I not "D:\子文件夹查看\AAA-001-00023\读取文件夹名称.bat" == "D:\子文件夹查看\AAA-001-00023\读取文件夹名称.txt" (
set "$=D:\子文件夹查看\AAA-001-00023\读取文件夹名称.txt"  
set "$=!$:D:\子文件夹查看\AAA-001-00023\=!"  
set "$=!$:\=-!"  
echo,!$!
)
读取文件夹名称.txt

我想要的是
AAA-001-00023
假如在这个文件下还有子文件夹的话,那么是
AAA-001-00023-子文件夹的名称
在这个文件夹里有200个文件夹,您这个代码只读取了一个
作者: /zhqsystem/zhq    时间: 2019-6-2 01:36

回复 7# luckcsz
....我测试的是文件不是文件夹,dir/a-d替换dir/ad,....
作者: luckcsz    时间: 2019-6-4 18:33

本帖最后由 luckcsz 于 2019-6-4 18:39 编辑

回复 8# /zhqsystem/zhq

@echo off
(for /f "delims=" %%i in ('dir/ad/s/b *.*') do (
  echo %%i
))>aa.txt

怎么样把上层文件夹名称不要提取,我就哪层文件夹运行BAT,那么直接提取运行层开始
D:\子文件夹查看\AAA-001-00023>
提取后就直接这样
AAA-001-00023
假如还有子文件夹那么
AAA-001-00023\子文件夹称
AAA-001-00023\子文件夹称\子文件夹等等
作者: zaqmlp    时间: 2019-6-4 19:25

  1. @echo off
  2. set info=互助互利,支付宝扫码头像,感谢赞助
  3. rem 有问题,可加QQ956535081及时沟通
  4. title %info%
  5. cd /d "%~dp0"
  6. (for /f "delims=" %%a in ('dir /ad/b/s') do (
  7.     set "fd=%%a"
  8.     setlocal enabledelayedexpansion
  9.     set "fd=!fd:%~dp0=!"
  10.     echo;!fd:\=-!
  11.     endlocal
  12. ))>"list.txt"
  13. echo;%info%
  14. pause
复制代码

作者: luckcsz    时间: 2019-6-5 02:20

回复 10# zaqmlp


    谢谢~!
作者: zaqmlp    时间: 2019-6-5 12:52

回复 11# luckcsz

赞助实际点




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2