[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

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

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

评分人数

    • tz_being: 厉害。如果我要以短文件名形式显示文件夹名 ...技术 + 1

TOP

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

TOP

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

dir /x /ad 再使用 for 试试
还有 find "~"

TOP

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

TOP

返回列表