Board logo

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

作者: tz_being    时间: 2018-12-11 17:56     标题: [已解决]批处理如何将文件夹包括子文件夹内所有文件以短文件名的形式列出来?

本帖最后由 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)拖到批处理中执行,运行结果:

作者: flashercs    时间: 2018-12-11 22:37

  1. @echo off
  2. for /f "delims=" %%A in ('where /r "%~1" *.*') do (
  3.   echo,"%%~sA"
  4. )
  5. pause
  6. exit /b
复制代码

作者: tz_being    时间: 2018-12-11 23:18

第一次听说where这个命令,确实解决了文件以短文件名形式显示的难题。如果我需要文件夹也以短文件名的形式列出来呢,大哥能做到吗?
作者: hnfeng    时间: 2018-12-12 08:11

本帖最后由 hnfeng 于 2018-12-12 08:13 编辑

dir /x /ad 再使用 for 试试
还有 find "~"
作者: tz_being    时间: 2018-12-12 13:54

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




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