标题: [文本处理] [已解决]批处理如何得到把文件夹的排序按字符长短排列的txt文件? [打印本页]
作者: 终_焉 时间: 2015-2-28 23:54 标题: [已解决]批处理如何得到把文件夹的排序按字符长短排列的txt文件?
本帖最后由 终_焉 于 2015-3-1 23:16 编辑
我想用BAT得到把文件夹的排序按字符长短排列的txt文件,为什么以下代码无法达成效果。- @echo off&setlocal enabledelayedexpansion
- for /f %%i in ( 'dir /a-d/b' ) do ( set a=%%~ni&echo !a!>>list1.txt )
- pause
复制代码
以上代码运行正常- @echo off
- set a=1
- set b=2
-
- :continue
- sort /+%a% list%a%.txt>list%b%.txt
- del list%a%.txt
- set /a a+=1
- set /a b+=1
-
- :end
- pause
-
- if %b% grt 20 ( goto end ) else ( goto continue )
复制代码
以上代码只运行一次。
为什么会出现这种情况?
作者: apang 时间: 2015-3-1 00:10
把第14行摞到第10行试试
作者: 终_焉 时间: 2015-3-1 00:25
我试了一下,把第14行摞到第10行也还是只执行一次,第14行摞到第04行则一次也不执行
作者: 终_焉 时间: 2015-3-1 00:27
- @echo off
- set a=1
- set b=2
-
- :continue
- sort /+%a% list%a%.txt>list%b%.txt
- del list%a%.txt
- set /a a=a+1
- set /a b=b+1
- exit
-
- if %b% grt 20 ( goto end ) else ( goto continue )
-
- :end
- pause
- exit
复制代码
补上exit也还是只执行一次
作者: apang 时间: 2015-3-1 00:39
再把grt改成gtr试试
作者: pcl_test 时间: 2015-3-1 20:57
本帖最后由 pcl_test 于 2015-3-2 12:28 编辑
回复 1# 终_焉 - @echo off
- setlocal enabledelayedexpansion
- ::dir /a-d/b是列出文件名,dir /ad/b列出文件夹名,如果名字中有空格,一个空格算一个字符
- for /f "delims=" %%i in ('dir /a-d /b') do >>"list.txt" echo,%%i
- echo 导出列表完毕
- echo 正在对列表进行排序
- for /f "delims=" %%a in ('type "list.txt"') do (
- >>$1 echo,%%a¥
- )
- for /f "delims=" %%b in ('type $1') do (
- set "str=%%b"
- set len=0
- for /l %%c in (0 1 1000) do (
- if "!str:~%%c,1!" == "¥" set "len=%%c" && call :endlen !str! !len!
- )
- )
- for /l %%d in (1 1 200) do (
- findstr /c:"¥%%d¥" $2 >>$3
- )
- for /f "tokens=1* delims=¥" %%e in ('type $3') do >>$ echo,%%e
- move $ "list.txt"
- echo 排序完毕
- del $*
- pause & exit
- :endlen
- >>$2 echo,!str!!len!¥
- goto :eof
复制代码
作者: 终_焉 时间: 2015-3-1 22:48
回复 5# apang
我改了 grt 和 gtr 都是一次就停
作者: 终_焉 时间: 2015-3-1 22:52
回复 6# pcl_test
谢谢。这个行!我仔细看看代码。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |