标题: [文本处理] 批处理把文本内容横列变纵列 [打印本页]
作者: 随风 时间: 2008-4-22 21:05 标题: 批处理把文本内容横列变纵列
求助:把文本内容横列变纵列。
a.txt 不确定每行字符个数及行数。样本如下:复制代码
要求:代码效率不能太低,可以适当产生临时文件。
生成新文本内容如下:- 1
- a
- 2
- 3
- 4
- 5
- b
- c
- g
- 6
- d
- 7
- e
- f
- 8
- 9
- 0
复制代码
[ 本帖最后由 随风 于 2008-4-23 06:56 编辑 ]
作者: youxi01 时间: 2008-4-23 18:47
有一个思路:
在各横行字符间插入空格(先将空格替换成其它非常见字符)
然后用for来提取相关内容即可。
作者: ieutk 时间: 2008-4-23 19:36
- @echo off
- setlocal enabledelayedexpansion
- set "num=0"
- :aa
- for /f "delims=" %%a in (a.txt) do call :ie "%%a"
- set /a num+=1
- goto aa
-
- :ie
- set "ya=%~1"
- for /l %%i in (%num% 1 100) do (
- if "!ya:~%%i,1!"==" " goto :eof
- if not "!ya:~%%i,1!"=="" echo !ya:~%%i,1!
- goto :eof
- )
复制代码
作者: 随风 时间: 2008-4-23 19:59 标题: 回复 3楼 的帖子
没仔细看题吧,不光是横变竖哦。。
作者: 梦想种子 时间: 2008-4-23 20:14
- @echo off&setlocal enabledelayedexpansion
- set max=0
- for /f "delims=" %%i in (a.txt) do (
- set /a i+=1
- call :split "%%i" !i!)
- for /l %%i in (0 1 %max%) do (
- for /l %%j in (0 1 !i!) do (
- set t=!s_%%j_%%i!
- if not "!t!" == "" if not "!t!" == " " echo !t!))
- pause&exit
- :split
- set c=-1&set "s=%~1"
- :next
- set /a c+=1
- if not "!s:~%c%,1!" == "" (
- set s_%2_%c%=!s:~%c%,1!
- goto next
- ) else if %c% gtr %max% set max=%c%
复制代码
[ 本帖最后由 梦想种子 于 2008-4-25 21:33 编辑 ]
作者: ieutk 时间: 2008-4-23 20:23
3楼代码不对?
我运行楼上代码的结果同我的一样呀
作者: 随风 时间: 2008-4-23 20:48
是我看错了。。不好意识。。
作者: ieutk 时间: 2008-4-24 10:40
用call来跳出for
回复7楼:
没有的事,不过我的代码还不完整呢!
[ 本帖最后由 ieutk 于 2008-4-27 11:54 编辑 ]
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |