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

[文本处理] 批处理如何将以指定字符分割的多个字段按指定数目分行

本帖最后由 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:07 编辑
  1. @echo off
  2. for /f %%i in (1.txt) do (
  3. set str=%%i
  4. setlocal enabledelayedexpansion
  5. echo !str:~0,9!>>2.txt
  6. echo !str:~10,9!>>2.txt
  7. echo !str:~20,9!>>2.txt
  8. echo !str:~30,9!>>2.txt
  9. echo !str:~40,9!>>2.txt
  10. echo !str:~50,9!>>2.txt
  11. endlocal )
复制代码
逗号要换成英文状态下输入的才行。
学习中

TOP

回复 2# battab


    你这样不行!5个词分成1行,而不是固定字数分成一行。

TOP

这种情况你要上传你的真实数据才行,你举例是没有用的。
初九的冬天

TOP

  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%a in (1.txt) do call :loop "%%a"
  3. pause
  4. exit/b0
  5. :loop
  6. for /f "tokens=1-5* delims=,," %%a in ("%~1") do (
  7.     set "str=%%a,%%b,%%c,%%d,%%e"
  8.     set str=!str:,,=!
  9.     if "!str:~-1!" == "," (
  10.        echo !str:~,-1!
  11.     ) else echo;!str!
  12.     call :loop "%%f"
  13. )
复制代码

TOP

本帖最后由 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 安装置顶帖子
  1. Get-Content -Delimiter ',' aaa.csv -ReadCount 5|ForEach-Object { $_ -join ""} |out-file .\b.txt
复制代码
我win8.1测试通过
脚本是写给人看的,是写给用户看的,而不是写给机子看的
用户能看懂、会修改的脚本,才是好脚本。
写易懂的powershell脚本帮人解决问题,进而让用户学会自渔,吾所愿也

TOP

1.txt的内容:

写完了,我,情绪,没有恢复,至今,打字,时候,还是习惯性,打出等字眼,这是一段难忘,日子,我喜欢这些人,君无悔,英雄,东方问心,执着,夜孤寒,深情,梅雪烟,雍容

想要得到的结果:(也就是每5个逗号分为一组)
写完了,我,情绪,没有恢复,至今,
打字,时候,还是习惯性,打出等字眼,这是一段难忘,
日子,我喜欢这些人,君无悔,英雄,东方问心,
执着,夜孤寒,深情,梅雪烟,雍容

TOP

  1. @echo off
  2. set m=1&set n=5
  3. :aaa
  4. for /f "tokens=%m%-%n% delims=," %%a in ('type "1.txt"') do (
  5. set /a n+=5&set /a m+=5
  6. echo,%%a,%%b,%%c,%%d,%%e,
  7. goto :aaa
  8. )
  9. pause>nul
复制代码
1

评分人数

TOP

回复 8# lifei259


    你这个很不错    那得到的结果能不能自动生成2.txt?

TOP

回复 9# 598seo
  1. @echo off
  2. set m=1&set n=5
  3. :aaa
  4. for /f "tokens=%m%-%n% delims=," %%a in ('type "1.txt"') do (
  5. set /a n+=5&set /a m+=5
  6. echo,%%a,%%b,%%c,%%d,%%e,>>2.txt
  7. goto :aaa
  8. )
  9. pause>nul
复制代码

TOP

回复 10# lifei259


    您好!谢谢您!但是这样分出来最多只有6行。但是我的词远远不止6行那么多。能帮我再做一下吗?感激涕零~!

TOP

第三方
  1. gawk "gsub(/([^,,]*(,|,)){5}/,\"^&\n\")" "a.txt"|find /v ""
  2. pause
复制代码

TOP

返回列表