标题: [文本处理] 【已解决】求助批处理 文本逗号分隔 [打印本页]
作者: KLL 时间: 2023-9-24 13:57 标题: 【已解决】求助批处理 文本逗号分隔
文本行中,原文件以多空格做分隔
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
谢谢
作者: pd1 时间: 2023-9-24 14:46
你的123后面本来就是带空格还是你复制错了?
作者: pd1 时间: 2023-9-24 14:48
本帖最后由 pd1 于 2023-9-24 14:54 编辑
- powershell -c "((gc .\1.txt) -replace '[ ]+(?=[\S])',',') -replace '[ ]+$',''>2.txt"
复制代码
作者: hlzj88 时间: 2023-9-24 15:29
这不是直接得到结果的答案,但可以通过你自己修改来得到需要的结果- @echo off
- del /q 2.txt>nul 2>nul
- echo 展示需要的列的位置,缺点只有26列。 源 1.txt 结果 2.txt
- echo 用法,根据结果明确每列对应的变量名称,复制下面源码,修改保留对应列,调整顺序,变更间隔符。
- echo 建议先取文件部分内容用于观察。
- pause
- 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
复制代码
作者: KLL 时间: 2023-9-24 16:18
您好
123后面也有带空格
作者: 77七 时间: 2023-9-24 17:17
- @echo off
- (for /f "useback delims=" %%a in (`find /n /v "" ^<"1.txt"`) do (
- set "str=%%a "
- setlocal enabledelayedexpansion
- for /l %%l in (1,1,10) do (
- set "str=!str: = !"
- )
- set "str=!str: =,!"
- set "str=!str:~0,-1!"
- echo=!str:*]=!
- endlocal
- ))>"2.txt"
- pause
复制代码
作者: aloha20200628 时间: 2023-9-24 18:37
本帖最后由 aloha20200628 于 2023-9-24 18:54 编辑
简化纯P版》可直接利用空格是for/f...()的默认分隔符- @echo off &setlocal enabledelayedexpansion
- (for /f "delims=" %%a in (源文件.txt) do (
- set "_str=" &for %%b in (%%a) do (set "_str=!_str!,%%b")
- echo,!_str:~1!
- ))>新文件.txt
- endlocal &exit/b
复制代码
作者: hfxiang 时间: 2023-9-24 18:40
回复 1# KLL
用第3方工具gawk( http://bcn.bathome.net/tool/4.1.0/gawk.exe )方案如下:- gawk -v"OFS=," "$1=$1" 1.txt>2.txt
复制代码
作者: KLL 时间: 2023-9-24 19:06
运行已解决
感谢各位先进指导协助,谢谢
作者: 77七 时间: 2023-9-24 22:45
回复 6# 77七
参考[系列教程]批处理for语句从入门到精通[20101225更新]教程中的
(六)如何决定该使用 for /f 的哪种句式?(兼谈usebackq的使用)
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |