多文件输入批量删除换行符

多文件输入批量删除换行符

我正在尝试更改脚本;我不想添加一行file.txt,而是想对*.txt目录内的所有文件执行此操作。此脚本删除新行并添加逗号进行分隔。

任何帮助均感激不尽。

@echo off
setlocal EnableDelayedExpansion

set "line="


for /F "delims=" %%a in (inputfile.txt) do set "line=!line!,%%a"

echo !line:~1!>>outputfile.txt

我尝试使用的输入文件是以下 csv 2019-05-29 08:03:48,倾斜A,3.420,19.9,0.5017,0.6903 2019-05-29 09:03:48,倾斜B,3.420,19.9,0.3017,0.6903 2019-05-29 08:03:48,倾斜C,3.420,19.9,0.5017,0.6903 2019-05-29 09:03:48,倾斜D,3.420,19.9,0.3017,0.6903 2019-05-29 08:03:48,倾斜E,3.420,19.9,0.5017,0.6903

答案1

谢谢你的澄清!这应该能让你找到正确的方向:

@echo off

set "dir=C:\Your\Directory"
set "dirs=C:\Your\Output\Folder"

setlocal enabledelayedexpansion
for /r "%dir%" %%A in (*.txt) do (
    set "new=%%~nA"
    if exist "%dirs%\!new!.txt" del /f /q "%dirs%\!new!.txt"
    for /f %%B in (%%A) do (
        echo|set /p="%%B,"
    ) >> "%dirs%\!new!.txt"
)

我强烈建议使用不同的输出文件夹,除非您想要覆盖源 txt 文件 - 所以这就是我想出的办法。第一个循环将遍历指定目录 ( for /r %dir%) 中的所有 txt 文件,并将每个文件的名称设置为变量new;之后它将立即检查输出目录中是否存在该newtxt 文件并将其删除 - 这是至关重要的一步,因为我们必须使用>>将所有参数输出%%B到一行上,因为>将覆盖所有先前的条目。如果您不删除new之前运行脚本时创建的任何潜在 txt 文件,它将复制该行上的条目。处理完这些之后,我们有一个嵌套的 for 循环,它从文本文件中获取信息并使用 将echo|set /p每个信息放在%%B同一行上,。使用这个基本脚本,会有一个尾随,,您可能想要或不想删除它 - 否则,我相信这将实现您想要的。

相关内容