用于将 txt 转换为 CSV 的批处理文件删除空格和逗号转换为列
Batch File for convert txt to CSV removes spaces and commas convert to columns
我是批处理文件程序的新手。
我有很多文本 (.txt) 文件要转换为 CSV。如果使用手动方法(复制粘贴到 excel)删除 space 或逗号并转换为列,这将花费很多时间。
我有一个想法创建一个批处理文件并将其放在文本(.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文件如下所示
文件夹结构
这个批处理文件代码有解决办法吗?
非常感谢您的帮助。谢谢大家!
我认为这可能会满足您的要求:
@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
开头的行来处理(需要时添加空行)。
保存的每一行都有每个 space 分隔值,它们之间用逗号保存。
这里有一个基本示例供您作为学习经验的一部分来完成。答案仅适用于您提供的已发布文本文件内容。我不会在其中解释任何内容,也不会因您最初发布的任务的后续更改而更改任何内容,(因为您自己没有尝试过任何事情).
@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")
进入电子表格后,如果您希望它与您发布的图片相匹配,您仍然需要合并所需的单元格对齐和格式更改。
我是批处理文件程序的新手。
我有很多文本 (.txt) 文件要转换为 CSV。如果使用手动方法(复制粘贴到 excel)删除 space 或逗号并转换为列,这将花费很多时间。
我有一个想法创建一个批处理文件并将其放在文本(.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文件如下所示
文件夹结构
这个批处理文件代码有解决办法吗?
非常感谢您的帮助。谢谢大家!
我认为这可能会满足您的要求:
@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
开头的行来处理(需要时添加空行)。
保存的每一行都有每个 space 分隔值,它们之间用逗号保存。
这里有一个基本示例供您作为学习经验的一部分来完成。答案仅适用于您提供的已发布文本文件内容。我不会在其中解释任何内容,也不会因您最初发布的任务的后续更改而更改任何内容,(因为您自己没有尝试过任何事情).
@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")
进入电子表格后,如果您希望它与您发布的图片相匹配,您仍然需要合并所需的单元格对齐和格式更改。