Tiana丶Tiana 发表于 2024-4-22 11:06

BAT脚本 获取目录下2级目录文件夹名称

本帖最后由 Tiana丶Tiana 于 2024-4-25 09:56 编辑

因为工作中遇到需要统计超多的文件夹名字。懒得写程序又想省力气,就只能选择经常被人遗忘的BAT脚本。
适用于:统计工作
使用情景:
1948年 - 2023工作内容 ,每一年下面的子文件夹名称需要与数据表中名称核对一致。显然让你去每个文件去粘贴复制到EXCEL是不可能的。



优化后更好的方法可以看后面:一楼大佬

@echo off
title 文件夹目录获取

for /f "delims=" %%a in ('cd') do @set CURRENT_DIR=%%a

echo 当前路径: %CURRENT_DIR%

dir /AD /B %CURRENT_DIR% > dirlist.txt

set tag=\
set tag2=\dirlist.txt
set dirlist=%CURRENT_DIR%%tag2%

for /f %%i in (%dirlist%) do (

echo 正在处理路径: %CURRENT_DIR%%tag%%%i

dir /ad /b %CURRENT_DIR%%tag%%%i>> list.txt

)

del %CURRENT_DIR%%tag2%

echo---------------------------------------------
echo已写入到 %CURRENT_DIR% list.txt 文件
echo---------------------------------------------


pause


namejm 发表于 2024-4-22 12:51

本帖最后由 namejm 于 2024-4-22 13:01 编辑

感觉楼主的代码还可以再优化一下:
1、获取当前文件夹路径没必要放在 for 语句中处理,直接用 %cd% 获取即可
2、既然都已经用到 for 了,就没必要再使用临时文件,可以使用 for 语句嵌套
3、如果文件夹名中包含了 & ,代码必然出错,路径名称最好用双引号括起来,正式引用前再在文本中批量去除双引号即可
4、在 for 语句中用 dir >>txt 语句频繁写入文本,如果第一层文件夹数量超多,CPU占用和写入速度应该是很难令人满意的

试着优化一下代码:
@echo off
title 卷宗目录获取

echo 当前路径: "%CD%"

(for /f "delims=" %%i in ('dir /ad /b 2^>nul') do (
for /f "delims=" %%j in ('dir /ad /b "%%i" 2^>nul') do (
    echo "%CD%\%%i\%%j"
)
))>list.txt

echo---------------------------------------------
echo已写入到 list.txt 文件
echo---------------------------------------------


pause

Pwaerm 发表于 2024-4-22 11:53

bat 是世界上最快捷方便的效率工具。

支持{:301_997:}

xl2pojie 发表于 2024-4-22 11:28

值得收藏。

zjkedy 发表于 2024-4-22 11:52

积少成多, 继续努力

kittylang 发表于 2024-4-22 12:28

bat和pwsh一比属实一坨

eenny820 发表于 2024-4-22 13:22

bat的脚本可以写入到VB.NET么?

wkdxz 发表于 2024-4-22 14:18

namejm 发表于 2024-4-22 12:51
感觉楼主的代码还可以再优化一下:
1、获取当前文件夹路径没必要放在 for 语句中处理,直接用 %cd% 获取即 ...

这代码确实精简,一看就是老手。

虽然还能再少两层括号,但那样就失去易读性了

Tiana丶Tiana 发表于 2024-4-22 14:22

namejm 发表于 2024-4-22 12:51
感觉楼主的代码还可以再优化一下:
1、获取当前文件夹路径没必要放在 for 语句中处理,直接用 %cd% 获取即 ...

感谢指导与优化,对BAT脚本,我不是很精通哈。

Tiana丶Tiana 发表于 2024-4-22 14:50

eenny820 发表于 2024-4-22 13:22
bat的脚本可以写入到VB.NET么?

可以内嵌
页: [1] 2 3 4
查看完整版本: BAT脚本 获取目录下2级目录文件夹名称