标题: [文本处理] txt文件内容列转行(同列内容合并成一行) [打印本页]
作者: cobinzhang 时间: 2014-5-7 19:19 标题: txt文件内容列转行(同列内容合并成一行)
大约有100个txt文件要转置一下,就是将每个文件里的列变成行,行变成列(示例见3楼)怎么批处理方便一点?求代码
上传3个示例文件
作者: CrLf 时间: 2014-5-7 20:31
请问楼主什么叫转置...不说清规则怎么帮你呢?
作者: cobinzhang 时间: 2014-5-7 21:09
回复 2# CrLf
转置就是 ,比如 1 2 3
4 5 6
7 8 9
转成 1 4 7
2 5 8
3 6 9
作者: cobinzhang 时间: 2014-5-7 21:17
回复 2# CrLf
坛子里搜了一下,有位仁兄写了这个批处理
http://www.bathome.net/thread-10273-1-1.html
我运行了一下,中间两列数据转置后就丢失了一大半
作者: CrLf 时间: 2014-5-8 17:19
本帖最后由 CrLf 于 2014-5-8 17:32 编辑
- @echo off
- set x=0
- rd /s /q 测试&md 测试
- for %%a in (*.txt) do (
- setlocal enabledelayedexpansion
- (for /f "delims=" %%b in (%%~sa) do (
- set /a y=0,x+=1
- for %%c in (%%b) do (
- set /a y+=1
- set "_!x!_!y!=%%c"
- )
- )
- set /a x'=x-1
- for /l %%b in (1 1 !y!) do (
- for /l %%c in (1 1 !x'!) do (
- set /p"=!_%%c_%%b! "
- )
- for %%c in (!x!) do echo;!_%%c_%%b!
- ))<nul >测试\%%a
- endlocal
- )
- pause
复制代码
作者: CrLf 时间: 2014-5-8 17:32
如果文件大的话,这样更快:- @echo off
- rd /s /q 测试&md 测试
- for /l %%a in (1 1 5) do call :getY %%a
- pause&exit/b
-
- :getY
- for %%a in (*.txt) do (
- for /f "tokens=%1" %%b in (%%~sa) do set /p"=%%b "
- echo;
- )<nul >>测试\%%a
复制代码
作者: PowerShell 时间: 2014-5-8 18:02
用excel的复制粘贴即可实现转置。
安全可靠+快速。
自动的话,宏,excel插件,vbs,powershell都可以。
我记得前几天坛子里有个家伙说精通vba,问问他。。。
作者: cobinzhang 时间: 2014-5-15 11:41
回复 5# CrLf
版主,用这个代码处理文档为什么速度会越来越慢?好几个小时只处理了几天个,到后来处理每个文档所花时间越来越多
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |