bat命令 遍历目标文件夹下的所有文件,并输出文件名,如果是在子文件夹下,则还要输出文件夹的名字

列 - 结构:
A\B\c.txt
A\e.txt
输出
B
c.text
e.text

你的子文件夹或出现多层吗?如果出现多层的,是把这个文件的所有层子文件夹名输出,还是只输出文件所在目录的名字?
例如这样的多层子目录
A\D\E\F.txt
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-04-02
::获取本级文件夹名称和它子集文件名称放入ab列
::获取日期,防止生成文件与源目录文件发生冲突

@echo off
set datevar=%date:~0,4%%date:~5,2%%date:~8,2%
set timevar=%timevar%%time:~3,2%%time:~6,2%
set path=%~dp0
rem 获取文件夹名称
for /f "delims="  %%a in ('dir /b/ad') do  ( 
rem 拼加下个参数路径
echo %%a
rem 获取子集中目录文件名称
for /f "tokens=1-3 delims=" %%b in ('dir /b/od %path%%%a') do echo %%a,%%b%%c%%d>>%datevar%%timevar%.csv
)
pause

我以前写过的 缺点是我还不知道

不过我只写了遍历两层,一层文件夹,一层文件名。不过我有个笨方法,

dir /b/s>>1.csv

你可以把>>1.csv删掉,这个就很直接了没有美化过的,出来的数据是盘符加路径加文件名,一堆,我把它放进excel中替换顺便分列处理数据

第2个回答  2016-10-04
tree就行……追问

完全不懂bat。求给完整代码。

追答

比如tree c:\
没什么可讲的,会形成一个树形列表。实在不懂打tree /? 所有命令打/?都是帮助,打>都是导出。比如tree c:\abc > 1.txt 会将结果保存到1.txt里

追问

百度了一下,tree完全不是我想要的效果啊。
我想要的是for遍历,然后单独输出子目录名,与文件名,因为我还需要单独进行一些操作。

追答

那批处理做不到了,你自己写代码吧

追问

我细想了一下,想到了解决办法。
我能通过for路径得到子目录的文件夹名。
然后用这个文件夹名+工作路径遍历子目录文件夹,得到需要的文件名。
这样就能得到文件夹的名字+文件名了。

追答

行,满足你的需求就行