我是新的批处理文件程序。
我有很多文本(.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文件如下所示

文件夹结构

该批处理文件代码有任何解决方案吗?
真的很感谢你的帮助。谢谢大家!
发布于 2021-01-13 05:30:06
我想这能做你想做的事:
@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开头的行来处理(在需要时添加空行)。保存的每一行都将空格分隔的值保存在中间的逗号中。
发布于 2021-01-14 02:46:13
下面是一个基本的例子,作为你学习经验的一部分。该答案只适用于您提供的已发布的文本文件内容。我不会解释它里面的任何东西,也不会因为你原来发布的任务的后续变化而改变任何东西(因为你自己没有尝试过任何事情)。
@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")一旦进入您的电子表格,您仍然需要合并您所需的单元格对齐和格式更改,如果您希望它与您发布的图像匹配。
https://stackoverflow.com/questions/65695542
复制相似问题