使用批处理使一个TXT文件多行合并一行,加逗号

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用批处理使一个TXT文件多行合并一行,加逗号相关的知识,希望对你有一定的参考价值。

例:
txt文档内容:
1
2
3
4
5
6
7
8
9
……
处理后:
1,2,3,4,5,6,7,8,
9,……,

如例,合并后需要加英文逗号(最后面也要),然后每8行合并一行

@echo off&setlocal enabledelayedexpansion
set n=0
(for /f "delims=" %%a in (test.txt) do (
set /a n+=1
set /p "s=%%a,"<nul
if !n! geq 8 set n=0&echo
))>#
move # test.txt

将文本文件test.txt的每八行合并成一行,用逗号分隔

追问

1,1,1,2,2,5,56,56,ECHO 处于关闭状态。
测试的时候,多出了后面的那句话,能直接去掉么?

追答@echo off&setlocal enabledelayedexpansion
set n=0
(for /f "delims=" %%a in (test.txt) do (
set /a n+=1
set /p "s=%%a,"<nul
if !n! geq 8 set n=0&echo.
))>#
move # test.txt

应该没有那句话了

参考技术A set t=
for /f "delims=" %%a in ('type "file.txt"') do (
set t=%t%,%%~a
)
echo %t%
pause追问

抱歉 之前问题补充不知道为什么没有上传,能再看看么?

使用 .Batch 拆分变量和合并 .txt 文件

【中文标题】使用 .Batch 拆分变量和合并 .txt 文件【英文标题】:Splitting Variable and merging .txt files using .Batch 【发布时间】:2021-05-11 17:30:37 【问题描述】:

我以为我能做到,但这不是我的职业。 下面,我试图获取第二列数据并生成一个 .txt (.csv),它将第二列分成两列。数据中有一个逗号,但它被双引号括起来。

我得到一个 .txt 文件

SourceFile,GPSPosition
Picture1.jpg,"21 deg 14' 4.621"" S, 159 deg 46' 45.358"" W"
Picture2.jpg,"21 deg 14' 4.621"" S, 159 deg 47' 45.358"" W"
Picture3.jpg,"21 deg 14' 4.621"" S, 159 deg 48' 45.358"" W"

注意:GPS 位置被识别为 .csv 中的一个单元格,类似于 "21 deg 14' 4.621"" S, 159 deg 48' 45.358"" W"

我想我会创建两个 .txt 文件,一个用于东移 (W),一个用于北移 (S),然后将它们合并。

@echo off
set batdir=%~dp0
pushd "%batdir%"

FOR /F "usebackq tokens=2 delims=," %%A IN ("%~dp0\filename") DO @echo %%A > "%~dp0\output.csv"
Call Easting.bat

我有第二个 .bat 文件 (Easting.bat),它的 Tokens=3。这两个文件的结果是:

"21 deg 14' 4.621"" s159 deg 48' 45.358"" W"

我使用什么命令在不同的行中获取所有北向和东向 GPS 点? 如何将两个文件合并为逗号分隔值?

【问题讨论】:

您是否有登录但未提供任何反馈的原因,尽管已收到答复?请阅读What should I do when someone answers my question?,了解当此类事件发生时您的选择。 感谢您的提问。简单的答案是它没有按我的预期工作,但我没有说“它没有工作”,而是试图找出问题所在,以便我们解决问题。 【参考方案1】:

仅基于您提供的示例文件内容和您自己使用的代码,这里有一个示例,它应该将第二个字段拆分为逗号,并将结果输出到一个新文件。我故意忽略了标题,因为您还需要在其中添加一个附加字段,并且可能重命名第二个字段。

@Echo Off
SetLocal EnableExtensions
PushD %~dp0
Set "input=filename"
Set "output=output.csv"
If Not Exist "%input%" GoTo :EOF
(For /F "UseBackQ Tokens=1,* EOL=, Delims=," %%G In ("%input%"
) Do For /F "Tokens=1,* EOL=, Delims=," %%I In ("%%~H") Do (
    For /F "Tokens=*" %%K In ("%%J") Do Echo %%G,"%%I","%%K")
) 1> "%output%"

预期输出:

Picture1.jpg,"21 deg 14' 4.621"" S","159 deg 46' 45.358"" W"
Picture2.jpg,"21 deg 14' 4.621"" S","159 deg 47' 45.358"" W"
Picture3.jpg,"21 deg 14' 4.621"" S","159 deg 48' 45.358"" W"

【讨论】:

以上是关于使用批处理使一个TXT文件多行合并一行,加逗号的主要内容,如果未能解决你的问题,请参考以下文章

Linux下使用xargs将多行文本转换成一行并用tr实现逗号隔开

如何在 Microsoft SQL Server Management Studio 中将多行合并为一行,用逗号分隔

如何批量将多个txt文本中多行合并成一行,且中间用tab或空间间隔,并最终合并成一个txt文件

利用python合并两个文件

Windows下快速合并文本文件

Windows下快速合并文本文件