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

[文本处理] 【已解决】求助批处理 文本逗号分隔

文本行中,原文件以多空格做分隔

00685     群加权P2  1120922      45.24     45.93     45.24     45.91      123   
00731     富时高息  1120922      65.20     65.55     65.20     65.55      516   

希望批处理, 实现用一个逗号分隔

00685,群加权P2,1120922,45.24,45.93,45.24,45.91,123   
00731,富时高息,1120922,65.20,65.55,65.20,65.55,516   

谢谢
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

你的123后面本来就是带空格还是你复制错了?

TOP

本帖最后由 pd1 于 2023-9-24 14:54 编辑
  1. powershell -c "((gc .\1.txt) -replace '[ ]+(?=[\S])',',') -replace '[ ]+$',''>2.txt"
复制代码

TOP

这不是直接得到结果的答案,但可以通过你自己修改来得到需要的结果
  1. @echo off
  2. del /q 2.txt>nul 2>nul
  3. echo 展示需要的列的位置,缺点只有26列。 源 1.txt 结果 2.txt
  4. echo 用法,根据结果明确每列对应的变量名称,复制下面源码,修改保留对应列,调整顺序,变更间隔符。
  5. echo 建议先取文件部分内容用于观察。
  6. pause
  7. for /f "tokens=1-26 delims= " %%a in (1.txt) do echo A%%a B%%b C%%c D%%d E%%e F%%f G%%g H%%h I%%i J%%j K%%k L%%l M%%m N%%n O%%o P%%p Q%%q R%%r S%%s T%%t U%%u V%%v W%%w X%%x Y%%y Z%%z>>2.txt
复制代码
目的,学习批处理

TOP

您好
123后面也有带空格

TOP

  1. @echo off
  2. (for /f "useback delims=" %%a in (`find /n /v "" ^<"1.txt"`) do (
  3. set "str=%%a "
  4. setlocal enabledelayedexpansion
  5. for /l %%l in (1,1,10) do (
  6. set "str=!str:  = !"
  7. )
  8. set "str=!str: =,!"
  9. set "str=!str:~0,-1!"
  10. echo=!str:*]=!
  11. endlocal
  12. ))>"2.txt"
  13. pause
复制代码
2

评分人数

    • pd1: ``这个可以解释下怎么用吗技术 + 1
    • Batcher: 乐于助人技术 + 1
bat小白,请多指教!谢谢!

TOP

本帖最后由 aloha20200628 于 2023-9-24 18:54 编辑


简化纯P版》可直接利用空格是for/f...()的默认分隔符
  1. @echo off &setlocal enabledelayedexpansion
  2. (for /f "delims=" %%a in (源文件.txt) do (
  3. set "_str=" &for %%b in (%%a) do (set "_str=!_str!,%%b")
  4. echo,!_str:~1!
  5. ))>新文件.txt
  6. endlocal &exit/b
复制代码

TOP

回复 1# KLL

用第3方工具gawk( http://bcn.bathome.net/tool/4.1.0/gawk.exe )方案如下:
  1. gawk -v"OFS=," "$1=$1" 1.txt>2.txt
复制代码

TOP

运行已解决

感谢各位先进指导协助,谢谢

TOP

回复 6# 77七


   参考[系列教程]批处理for语句从入门到精通[20101225更新]教程中的
(六)如何决定该使用 for /f 的哪种句式?(兼谈usebackq的使用)
1

评分人数

    • pd1: 感谢分享技术 + 1
bat小白,请多指教!谢谢!

TOP

返回列表