找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 11829|回复: 7

[文本处理] 求助批处理把文本内容竖列变为横列并添加一个逗号

[复制链接]
发表于 2025-3-3 12:04:51 | 显示全部楼层 |阅读模式
原文本是:(几千行ip地址)
14.155.94.13
14.155.94.102
14.155.91.144
14.155.88.81
14.155.88.39
14.155.87.184

处理后是:
14.155.94.13,14.155.94.102,14.155.91.144,14.155.88.81,14.155.88.39,14.155.87.184

就是变成为一行,然后每个后面需要加个逗号, 谢谢
发表于 2025-3-3 13:25:07 | 显示全部楼层
本帖最后由 aloha20200628 于 2025-3-3 15:40 编辑

回复 1# amio555

纯批用 set/p 大批量逐字段同行写出的效率有限,借助外力吧...
以下代码存为 test.bat,与源文件同目录运行,代码假设源文件名为 ipList.txt,输出文件名为 ipList.csv

  1. 2>1/* ::
  2. @echo off &type "ipList.txt"|cscript /nologo /e:jscript "%~f0">"ipList.csv"
  3. pause&exit/b */
  4. s=WSH.stdin, l=''
  5. while (!s.atendofstream) ip=s.readline(), l+=ip+','
  6. WSH.echo(l.slice(0,-1)),WSH.quit()
复制代码
附一个纯P版本如下...

  1. @echo off &set/p a=<"ipList.txt"
  2. (set/p="%a%"<nul
  3. for /f "skip=1 delims=" %%a in (ipList.txt) do set/p=",%%a"<nul)>"ipList.csv"
  4. pause&exit/b
复制代码
发表于 2025-3-3 13:42:37 | 显示全部楼层
本帖最后由 aloha20200628 于 2025-3-3 15:38 编辑

回复 1# amio555

再给一个 bat+powershell 版本,与2楼 bat+jscript 版本相比择其快者用之...

  1. @echo off &powershell "gc 'ipList.txt'|%%{$l+=$_+','};$l.trimend(',')">"ipList.csv"
  2. pause&exit/b
复制代码
发表于 2025-3-3 16:49:06 | 显示全部楼层

  1. @set @l_l=1;/*&echo off

  2. type "原文本名字" |cscript //nologo //e:jscript "%~f0" l> "新文本名字"

  3. echo done
  4. pause&exit /b 0 */
  5. if (!WScript.Arguments.Length){WScript.Quit();}
  6. WScript.StdOut.Write(WScript.StdIn.ReadAll().split(/\r?\n/).join(','));
复制代码
发表于 2025-3-3 17:37:20 | 显示全部楼层
  1. @echo off&setlocal enabledelayedexpansion&set n=0&del output.txt 2>nul
  2. for /f "delims=" %%i in ('type "input.txt"')do (
  3.         if !n!==0 (set t=%%i)else set t=,%%i
  4.         set /p "=!t!" <nul >>output.txt
  5.         set/a n=+1
  6. )
  7. pause
复制代码
处理任意行数的IP地址(无变量长度限制)
自动跳过空行
完美处理首尾字符(无多余逗号)
保留原始IP顺序
发表于 2025-3-3 23:11:04 | 显示全部楼层
  1. for /f "delims=" %%i in ('type 1.txt') do echo %%i,>>2.html
  2. htox32c /IP /S1 /O0 2.html
复制代码
利用网页无换行标签自动为一行的特点,采用第三方,本网站地址http://bcn.bathome.net/s/tool/index.html内搜索下载htox32c
发表于 2025-3-4 00:10:58 | 显示全部楼层
回复 1# amio555

若从本坛第三方下载 tr.exe (http://bcn.bathome.net/s/tool/index.html?key=tr,与源文件同目录运行)可用以下一行流代码...

  1. tr.exe -d "\r\n" <"ipList.txt">"ipList.csv"
复制代码
发表于 2025-3-9 15:44:13 | 显示全部楼层
Powershell追加文件内容时有一个参数可以避免换行,调用powershell一行解决
  1. @powershell "type ip.txt|%% {add-content -path ip-new.txt -value $_',' -nonewline}"
复制代码
写成bat文件后和源文件“ip.txt”放一个路径,生成新文件“ip-new.txt”
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 08:46 , Processed in 0.019947 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表