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

[文件操作] [已解决]批处理如何将文件夹包括子文件夹内所有文件以短文件名的形式列出来?

[复制链接]
发表于 2018-12-11 17:56:37 | 显示全部楼层 |阅读模式
本帖最后由 tz_being 于 2018-12-13 12:53 编辑

如何将一个文件夹包括子文件夹内所有文件以短文件名的形式列出来
我目前的代码是这样:
  1. for /f "delims=" %%i in ('dir /a-d /s /b "%1"') do (
  2. for /f "skip=3 tokens=4" %%i in ('dir /x "%%i"') do (
  3. echo "%%~si"
  4. goto next
  5. ))
  6. :next
  7. pause>nul
复制代码
把C:\11文件夹(里面包含文件2 2.txt)拖到批处理中执行,运行结果:
发表于 2018-12-11 22:37:32 | 显示全部楼层
  1. @echo off
  2. for /f "delims=" %%A in ('where /r "%~1" *.*') do (
  3.   echo,"%%~sA"
  4. )
  5. pause
  6. exit /b
复制代码

评分

参与人数 1技术 +1 收起 理由
tz_being + 1 厉害。如果我要以短文件名形式显示文件夹名 ...

查看全部评分

 楼主| 发表于 2018-12-11 23:18:12 | 显示全部楼层
第一次听说where这个命令,确实解决了文件以短文件名形式显示的难题。如果我需要文件夹也以短文件名的形式列出来呢,大哥能做到吗?
发表于 2018-12-12 08:11:05 | 显示全部楼层
本帖最后由 hnfeng 于 2018-12-12 08:13 编辑

dir /x /ad 再使用 for 试试
还有 find "~"
 楼主| 发表于 2018-12-12 13:54:20 | 显示全部楼层

  1. @echo off
  2. for /r "%~1" %%i in (.) do echo "%%~si"
  3. pause
复制代码
以上的代码就可以实现以短文件名的形式列出所有文件夹的名称。不过有缺点:
1、列不出隐藏文件夹的名称
2、对畸形文件夹的短文件名解析有错误
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 21:29 , Processed in 0.008629 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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