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

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

原文本是:(几千行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

就是变成为一行,然后每个后面需要加个逗号, 谢谢

本帖最后由 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
复制代码

TOP

本帖最后由 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
复制代码

TOP

  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(','));
复制代码

TOP

  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顺序

TOP

  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
目的,学习批处理

TOP

回复 1# amio555

若从本坛第三方下载 tr.exe (http://bcn.bathome.net/s/tool/index.html?key=tr,与源文件同目录运行)可用以下一行流代码...
  1. tr.exe -d "\r\n" <"ipList.txt">"ipList.csv"
复制代码

TOP

Powershell追加文件内容时有一个参数可以避免换行,调用powershell一行解决
  1. @powershell "type ip.txt|%% {add-content -path ip-new.txt -value $_',' -nonewline}"
复制代码
写成bat文件后和源文件“ip.txt”放一个路径,生成新文件“ip-new.txt”

TOP

返回列表