标题: [文本处理] 批处理如何将以指定字符分割的多个字段按指定数目分行 [打印本页]
作者: 598seo 时间: 2013-12-19 15:10 标题: 批处理如何将以指定字符分割的多个字段按指定数目分行
本帖最后由 pcl_test 于 2016-8-15 16:15 编辑
批处理怎样把5个词分成一排?
文件1.txt里面的内容
a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z
现在要把5个词分成一排
a,b,c,d,e
f,g,h,i,j
k,l,m,n,o
p,q,r,s,t
u,v,w,x,y
z
这样可以实现吗?谢谢了!
作者: battab 时间: 2013-12-19 17:05
本帖最后由 battab 于 2013-12-19 17:07 编辑
- @echo off
- for /f %%i in (1.txt) do (
- set str=%%i
- setlocal enabledelayedexpansion
- echo !str:~0,9!>>2.txt
- echo !str:~10,9!>>2.txt
- echo !str:~20,9!>>2.txt
- echo !str:~30,9!>>2.txt
- echo !str:~40,9!>>2.txt
- echo !str:~50,9!>>2.txt
- endlocal )
复制代码
逗号要换成英文状态下输入的才行。
作者: 598seo 时间: 2013-12-19 17:20
回复 2# battab
你这样不行!5个词分成1行,而不是固定字数分成一行。
作者: 1270697389 时间: 2013-12-19 18:04
这种情况你要上传你的真实数据才行,你举例是没有用的。
作者: terse 时间: 2013-12-19 20:15
- @echo off&setlocal enabledelayedexpansion
- for /f "delims=" %%a in (1.txt) do call :loop "%%a"
- pause
- exit/b0
- :loop
- for /f "tokens=1-5* delims=,," %%a in ("%~1") do (
- set "str=%%a,%%b,%%c,%%d,%%e"
- set str=!str:,,=!
- if "!str:~-1!" == "," (
- echo !str:~,-1!
- ) else echo;!str!
- call :loop "%%f"
- )
复制代码
作者: PowerShell 时间: 2013-12-19 21:40
本帖最后由 PowerShell 于 2013-12-19 21:48 编辑
你可以参考这篇帖子 如何把txt文本内容每间隔37行加空行一次 http://www.bathome.net/thread-27948-1-1.html
powershell代码,需要powershell 3.0及以上版本,
win8,及以上无需安装
如果是win7,需要手动安装powershell 4.0,详见powershell版 的 2.0 3.0 4.0 安装置顶帖子- Get-Content -Delimiter ',' aaa.csv -ReadCount 5|ForEach-Object { $_ -join ""} |out-file .\b.txt
复制代码
我win8.1测试通过
作者: 598seo 时间: 2013-12-21 11:00
1.txt的内容:
写完了,我,情绪,没有恢复,至今,打字,时候,还是习惯性,打出等字眼,这是一段难忘,日子,我喜欢这些人,君无悔,英雄,东方问心,执着,夜孤寒,深情,梅雪烟,雍容
想要得到的结果:(也就是每5个逗号分为一组)
写完了,我,情绪,没有恢复,至今,
打字,时候,还是习惯性,打出等字眼,这是一段难忘,
日子,我喜欢这些人,君无悔,英雄,东方问心,
执着,夜孤寒,深情,梅雪烟,雍容
作者: lifei259 时间: 2013-12-21 11:56
- @echo off
- set m=1&set n=5
- :aaa
- for /f "tokens=%m%-%n% delims=," %%a in ('type "1.txt"') do (
- set /a n+=5&set /a m+=5
- echo,%%a,%%b,%%c,%%d,%%e,
- goto :aaa
- )
- pause>nul
复制代码
作者: 598seo 时间: 2013-12-21 12:19
回复 8# lifei259
你这个很不错 那得到的结果能不能自动生成2.txt?
作者: lifei259 时间: 2013-12-22 13:41
回复 9# 598seo - @echo off
- set m=1&set n=5
- :aaa
- for /f "tokens=%m%-%n% delims=," %%a in ('type "1.txt"') do (
- set /a n+=5&set /a m+=5
- echo,%%a,%%b,%%c,%%d,%%e,>>2.txt
- goto :aaa
- )
- pause>nul
复制代码
作者: 598seo 时间: 2014-1-8 12:51
回复 10# lifei259
您好!谢谢您!但是这样分出来最多只有6行。但是我的词远远不止6行那么多。能帮我再做一下吗?感激涕零~!
作者: pcl_test 时间: 2016-8-15 16:23
第三方- gawk "gsub(/([^,,]*(,|,)){5}/,\"^&\n\")" "a.txt"|find /v ""
- pause
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |