Board logo

标题: [文本处理] [已解決]批处理如何让文本依照字数多寡排列? [打印本页]

作者: strong12345    时间: 2011-8-12 18:45     标题: [已解決]批处理如何让文本依照字数多寡排列?

本帖最后由 strong12345 于 2011-8-17 12:28 编辑
  1. 12345
  2. 12
  3. 123456789
复制代码
想让他排列成
  1. 123456789
  2. 12345
  3. 12
复制代码
请问怎么做最有效率?
(字元包含中文,英文,数字,等各种符号)
gawk有办法字算每行字元长度吗?
作者: Batcher    时间: 2011-8-12 22:06

参考:http://bbs.bathome.net/thread-9214-1-1.html
作者: 545810831    时间: 2011-8-13 13:57

我来试下
@echo off
setlocal enabledelayedexpansion
::假如每行字符不超过100
set m=100
:sta
set /a m=!m!-1
for /f "delims=" %%i in (1.txt) do (
set a=%%i
for /l %%a in (0 1 100) do (
if not "!a:~%%a,1!"=="" set  b=%%a
)
if !m! equ !b!  if not "!a:~%m%,1!"=="" echo !a!
)
if !m! gtr 0 goto sta
pause
作者: Hello123World    时间: 2011-8-13 17:24

本帖最后由 Hello123World 于 2011-8-13 17:28 编辑
  1. findstr /o ".*" 1.txt
复制代码
这句代码请无视,理解错误,/o是计算上行字符串偏移量。
作者: 545810831    时间: 2011-8-13 18:11

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. ::假如每行字符不超过100
  4. set m=100
  5. :sta
  6. set /a m=!m!-1
  7. for /f "delims=" %%i in (1.txt) do (
  8. set a=%%i
  9. for /l %%a in (0 1 100) do (
  10. if not "!a:~%%a,1!"=="" set  b=%%a
  11. )
  12. if !m! equ !b!  if not "!a:~%m%,1!"=="" echo !a!
  13. )
  14. if !m! gtr 0 goto sta
  15. pause
复制代码





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