使用 .Batch 拆分变量和合并 .txt 文件
Posted
技术标签:
【中文标题】使用 .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"" s
和
159 deg 48' 45.358"" W"
【问题讨论】:
您是否有登录但未提供任何反馈的原因,尽管已收到答复?请阅读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"
【讨论】:
以上是关于使用 .Batch 拆分变量和合并 .txt 文件的主要内容,如果未能解决你的问题,请参考以下文章