【问题标题】:Batch File for convert txt to CSV removes spaces and commas convert to columns用于将 txt 转换为 CSV 的批处理文件删除空格和逗号转换为列
【发布时间】:2021-04-18 02:07:52
【问题描述】:

我是批处理文件程序的新手。

我有很多文本 (.txt) 文件要转换为 CSV。如果使用手动方法(复制粘贴到 excel)删除空格或逗号并转换为列,则需要很长时间。

我有一个想法,创建一个批处理文件并将其放在运行批处理文件时将文本(.txt 文件)转换为 CSV 的同一文件夹中,它会自动将文本转换为 CSV 并创建CSV 文件。

文本文件格式如下图

作为文本:




 ADINA: AUI version 9.3.1, 22 November 2017:  *** NO HEADING DEFINED ***
 Licensed from ADINA R&D, Inc.
 Finite element program ADINA, response range type load-step:
 Listing for zone EG1:
      POINT        NODAL_FORCE-R

 Time 1.40000E+01

 Element 101100 of element group 1

 Local node 1     -2.96954E+03
 Local node 2      2.96954E+03

 Element 101200 of element group 1

 Local node 1      1.31964E+04
 Local node 2     -1.31964E+04

 Element 101300 of element group 1

 Local node 1      1.38607E+04
 Local node 2     -1.38607E+04

 Element 101400 of element group 1

 Local node 1     -3.57060E+03
 Local node 2      3.57060E+03

 Element 102100 of element group 1

 Local node 1      2.22511E+04

除此之外,我想删除红框中的文字。因为我没用过。

我要创建的 CSV 文件如下所示

文件夹结构

这个批处理文件代码有什么解决办法吗?

非常感谢您的帮助。谢谢大家!

【问题讨论】:

  • 您能否将图片中文本文件的文本版本粘贴到问题中,这样我就不必输入它来测试我的答案了吗?
  • 例如,Notepad++ 将用于“替换文件”。非常方便。
  • @JerryJeremiah 我已经粘贴了,谢谢你的帮助!
  • OP:这是对代码的明确要求,因为您没有尝试自己解决问题。请注意 stackoverflow.com stackoverflow.com> 不是免费的脚本/代码编写服务。编辑您在问题中尝试过的相关部分(使用剪切/粘贴)并说出您卡在哪里。我们可以尝试帮助解决具体问题。您还应该阅读我如何提出一个好问题? stackoverflow.com/help/how-to-ask>。话虽如此,并遵循“友善”的政策,我不会结束这个问题,即使它是题外话。
  • 另外:请包括图形,不要链接到它们。这样可以更轻松地查看整个问题,而无需来回切换。

标签: csv batch-file txt


【解决方案1】:

我认为这可能会满足您的需求:

@echo off
if "%1" == "" goto FindFiles

:ProcessFile
for /F "tokens=1,2,3,4,5,6" %%A in (%1) do (
if "%%A" == "Time" echo %%A,%%B
if "%%A" == "Local" echo %%A,%%B,%%C,%%D
if "%%A" == "Element" echo.
if "%%A" == "Element" echo %%A,%%B,%%C,%%D,%%E,%%F
if "%%A" == "Element" echo.
)
goto Exit

:FindFiles
for %%I in (*.txt) do call %0 %%I > %%~nI.csv
goto Exit

:Exit

双击时,它会为当前文件夹中的每个 *.txt 文件自行运行一次。 每个文件仅通过保存以Time、Local 或Element 开头的行来处理(需要时添加空行)。 保存的每一行都有每个以空格分隔的值,它们之间用逗号保存。

【讨论】:

  • 发布的源文件包含以 10 为底的指数格式的数字,生成的 CSV 看起来好像没有。现在就我们所知,特别是当 OP 的示例使用单元格对齐时,这些更改已在 Microsoft Excel 中通过分别格式化单元格来进行。我要说的一点是,虽然可以创建一个扩展名为.csv 的文件,但不可能创建一个文件,当在他们的电子表格应用程序中打开时,它会像 OP 发布的那样显示作为他们的预期结果。您还应该使用skip=9,省略不需要的行。
【解决方案2】:

下面是一个基本示例,您可以将其作为学习经验的一部分。答案仅适用于您提供的已发布文本文件内容。我不会解释其中的任何内容,也不会因您最初发布的任务的后续更改而更改任何内容,(因为您自己没有尝试过任何事情)。

@If Exist "force.txt" ((For /F "Skip=9 Tokens=1-7" %%G In (
    '%__AppDir__%find.exe /N /V "" ^< "force.txt"'
) Do @If Not "%%M" == "" (Echo %%H,%%I,%%J,%%K,%%L,%%M
    ) Else If Not "%%L" == "" (Echo %%H,%%I,%%J,%%K,%%L
    ) Else If Not "%%K" == "" (Echo %%H,%%I,%%J.%%K
    ) Else If Not "%%J" == "" (Echo %%H,%%I,%%J
    ) Else If Not "%%I" == "" (Echo %%H,%%I
    ) Else If Not "%%H" == "" (Echo %%H) Else Echo=) > "force.csv")

进入电子表格后,如果您希望它与您发布的图片匹配,您仍需要合并所需的单元格对齐和格式更改。

【讨论】:

    猜你喜欢
    • 2013-05-26
    • 2011-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-11
    相关资源
    最近更新 更多