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

[文本处理] 批处理把文本内容横列变纵列

求助:把文本内容横列变纵列。
a.txt  不确定每行字符个数及行数。样本如下:
  1. 123456789
  2. a   bde 0
  3.     c f
复制代码
要求:代码效率不能太低,可以适当产生临时文件。
生成新文本内容如下:
  1. 1
  2. a
  3. 2
  4. 3
  5. 4
  6. 5
  7. b
  8. c
  9. g
  10. 6
  11. d
  12. 7
  13. e
  14. f
  15. 8
  16. 9
  17. 0
复制代码

[ 本帖最后由 随风 于 2008-4-23 06:56 编辑 ]
技术问题请到论坛发帖求助!

有一个思路:
在各横行字符间插入空格(先将空格替换成其它非常见字符)
然后用for来提取相关内容即可。

TOP

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set "num=0"
  4. :aa
  5. for /f "delims=" %%a in (a.txt) do call :ie "%%a"
  6. set /a num+=1
  7. goto aa
  8. :ie
  9. set "ya=%~1"
  10. for /l %%i in (%num% 1 100) do (
  11. if "!ya:~%%i,1!"==" " goto :eof
  12. if not "!ya:~%%i,1!"=="" echo !ya:~%%i,1!
  13. goto :eof
  14.     )
复制代码
不大可能的事也许今天实现,根本不可能的事也许明天会实现

TOP

回复 3楼 的帖子

没仔细看题吧,不光是横变竖哦。。
技术问题请到论坛发帖求助!

TOP

  1. @echo off&setlocal enabledelayedexpansion
  2. set max=0
  3. for /f "delims=" %%i in (a.txt) do (
  4. set /a i+=1
  5. call :split "%%i" !i!)
  6. for /l %%i in (0 1 %max%) do (
  7. for /l %%j in (0 1 !i!) do (
  8. set t=!s_%%j_%%i!
  9. if not "!t!" == "" if not "!t!" == " " echo !t!))
  10. pause&exit
  11. :split
  12. set c=-1&set "s=%~1"
  13. :next
  14. set /a c+=1
  15. if not "!s:~%c%,1!" == "" (
  16. set s_%2_%c%=!s:~%c%,1!
  17. goto next
  18. ) else if %c% gtr %max% set max=%c%
复制代码

[ 本帖最后由 梦想种子 于 2008-4-25 21:33 编辑 ]
1

评分人数

静水流深...

TOP

没仔细看题吧,不光是横变竖哦。。


3楼代码不对?

我运行楼上代码的结果同我的一样呀
不大可能的事也许今天实现,根本不可能的事也许明天会实现

TOP

是我看错了。。不好意识。。
技术问题请到论坛发帖求助!

TOP

用call来跳出for


回复7楼:

没有的事,不过我的代码还不完整呢!

[ 本帖最后由 ieutk 于 2008-4-27 11:54 编辑 ]
不大可能的事也许今天实现,根本不可能的事也许明天会实现

TOP

返回列表