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

[文本处理] [已解决]批处理如何得到把文件夹的排序按字符长短排列的txt文件?

本帖最后由 终_焉 于 2015-3-1 23:16 编辑

我想用BAT得到把文件夹的排序按字符长短排列的txt文件,为什么以下代码无法达成效果。
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f %%i in ( 'dir /a-d/b' ) do ( set a=%%~ni&echo !a!>>list1.txt )
  3. pause
复制代码
以上代码运行正常
  1. @echo off
  2. set a=1
  3. set b=2
  4. :continue
  5. sort /+%a% list%a%.txt>list%b%.txt
  6. del list%a%.txt
  7. set /a a+=1
  8. set /a b+=1
  9. :end
  10. pause
  11. if %b% grt 20 ( goto end ) else ( goto continue )
复制代码
以上代码只运行一次。
为什么会出现这种情况?

把第14行摞到第10行试试

TOP

我试了一下,把第14行摞到第10行也还是只执行一次,第14行摞到第04行则一次也不执行

TOP

  1. @echo off
  2. set a=1
  3. set b=2
  4. :continue
  5. sort /+%a% list%a%.txt>list%b%.txt
  6. del list%a%.txt
  7. set /a a=a+1
  8. set /a b=b+1
  9. exit
  10. if %b% grt 20 ( goto end ) else ( goto continue )
  11. :end
  12. pause
  13. exit
复制代码
补上exit也还是只执行一次

TOP

再把grt改成gtr试试

TOP

本帖最后由 pcl_test 于 2015-3-2 12:28 编辑

回复 1# 终_焉
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. ::dir /a-d/b是列出文件名,dir /ad/b列出文件夹名,如果名字中有空格,一个空格算一个字符
  4. for /f "delims=" %%i in ('dir /a-d /b') do >>"list.txt" echo,%%i
  5. echo 导出列表完毕
  6. echo 正在对列表进行排序
  7. for /f "delims=" %%a in ('type "list.txt"') do (
  8. >>$1 echo,%%a¥
  9. )
  10. for /f "delims=" %%b in ('type $1') do (
  11. set "str=%%b"
  12. set len=0
  13. for /l %%c in (0 1 1000) do (
  14. if "!str:~%%c,1!" == "¥"  set "len=%%c" && call :endlen !str! !len!
  15. )
  16. )
  17. for /l %%d in (1 1 200) do (
  18. findstr /c:"¥%%d¥" $2 >>$3
  19. )
  20. for /f "tokens=1* delims=¥" %%e in ('type $3') do >>$ echo,%%e
  21. move $ "list.txt"
  22. echo 排序完毕
  23. del $*
  24. pause & exit
  25. :endlen
  26. >>$2 echo,!str!!len!¥
  27. goto :eof
复制代码
1

评分人数

TOP

回复 5# apang
我改了 grt 和 gtr 都是一次就停

TOP

回复 6# pcl_test
谢谢。这个行!我仔细看看代码。

TOP

返回列表