Board logo

标题: [文件操作] 批处理搜索D盘txt后再按文件名顺序排序怎样忽略文件夹顺序? [打印本页]

作者: yywd    时间: 2008-6-19 19:31     标题: 批处理搜索D盘txt后再按文件名顺序排序怎样忽略文件夹顺序?

搜索D盘*.txt后再按文件名顺序(怎样忽略文件夹顺序呀)
搜索*.txt后再按文件名顺序(忽略文件夹顺序)排序写入完整路径到1.txt
怎样忽略文件夹顺序呀
例如D盘有
D:\b.txt
D:\d.txt
D:\1\c.txt
D:\1\f.txt
D:\2\1\a.txt
D:\2\1\g.txt
D:\2\1\1\e.txt
则1.txt如下
D:\2\1\a.txt
D:\b.txt
D:\1\c.txt
D:\d.txt
D:\2\1\1\e.txt
D:\1\f.txt
D:\2\1\g.txt
作者: batman    时间: 2008-6-20 02:55     标题: 暂时只想到个生成临时文件的办法

  1. @echo off
  2. for /f "delims=" %%i in ('dir /s /a-d /b d:\*.txt') do echo %%~nxi>>temp1.txt&echo %%i>>temp2.txt
  3. for /f "delims=" %%i in ('type temp1.txt^|sort') do findstr "%%i" temp2.txt>>1.txt
  4. del /q temp*.txt&start 1.txt
复制代码

[ 本帖最后由 zw19750516 于 2008-6-20 03:11 编辑 ]
作者: namejm    时间: 2008-6-20 08:41

  发现CN-DOS的PPdos写了一段比较简洁的代码,但是结果是用短文件名,并且还带有多余的信息(没有把参与排序用的文件名过滤调),如果把那段代码放在其他路径下执行时,还会把当前路径信息写入结果。我就把他的代码完善一下吧,下面的代码能兼容路径带英文感叹号的情况,还能查找影藏的txt文件,缺点是生成了临时文件:
  1. @echo off
  2. cd.>e:\tmp.txt
  3. for /f "delims=" %%i in ('dir /a-d /b /s d:\*.txt 2^>nul') do (
  4.     setlocal enabledelayedexpansion
  5.     set "str=%%~nxi|%%i"
  6.     echo !str!>>e:\tmp.txt
  7.     endlocal
  8. )
  9. cd.>e:\list.txt
  10. for /f "delims=| tokens=1*" %%i in ('sort e:\tmp.txt') do (
  11.     setlocal enabledelayedexpansion
  12.     set "str=%%j"
  13.     echo !str!>>e:\list.txt
  14.     endlocal
  15. )
  16. del /q e:\tmp.txt
  17. start e:\list.txt
复制代码

作者: 踏沙行    时间: 2018-7-12 09:58

  1. @echo off
  2. (for /r %%a in (*.txt) do @echo %%~na.%%~xa) |sort
  3. pause
复制代码





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