我正在尝试更改脚本;我不想添加一行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
;之后它将立即检查输出目录中是否存在该new
txt 文件并将其删除 - 这是至关重要的一步,因为我们必须使用>>
将所有参数输出%%B
到一行上,因为>
将覆盖所有先前的条目。如果您不删除new
之前运行脚本时创建的任何潜在 txt 文件,它将复制该行上的条目。处理完这些之后,我们有一个嵌套的 for 循环,它从文本文件中获取信息并使用 将echo|set /p
每个信息放在%%B
同一行上,
。使用这个基本脚本,会有一个尾随,
,您可能想要或不想删除它 - 否则,我相信这将实现您想要的。