合并具有部分相同文件名的 CSV 文件

Merging CSV files with partly same filename

我有一个包含 aprox 的目录。 1500 个带有测量数据的 csv 文件,如液位、压力、体积等。 每次测量每小时导出一次测量数据。 所以生成的 Level 文件名将是 Levelxx.csv,其中 xx 的范围是 00-23 相同的方法适用于体积和压力以及所有其他测量值,例如 volume00.csv - volume23.csv。 我想将给定测量的所有 24 个文件合并为一个文件,例如 level-day.csv、volume-day.csv 等等。

命令:"copy /b level*.csv level-day.csv /y" 适用于一组, 但是如何对每个都有 24 小时文件的更多测量执行此操作? 文件名中唯一的共同点是 xx,其范围为 00-23。提前致谢

您可以简单地在 FOR 循环中迭代 属性 名称的静态列表。请注意,多个单词名称应包含在引号内:

@echo off
for %%A in (
  level
  pressure
  volume
  "multiword name"
   etc.
) do copy /b %%A??.csv %%a-day.csv /y

或者您可以动态发现属性的名称。

假设每个 属性 总是有一个时间 00 文件:

@echo off
setlocal enableDelayedExpansion
for %%A in (*00.csv) do (
  set "prop=%%~nA"
  set "prop=!prop:~0,-2!"
  copy /b "!prop!??.csv" "!prop!-day.csv"
) 

如果时间 00 有时可能会丢失:

@echo off
setlocal enableDelayedExpansion

:: Delete any existing -day files
delete *-day??.csv 2>nul

for /f "eol=: delims=" %%A in (
  'dir /b /a-d *.csv^|findstr "[^0-9][0-9][0-9]\.csv$"'
) do (
  set "prop=%%~nA"
  set "prop=!prop:~0,-2!"
  if not exist "!prop!-day.csv" copy /b "!prop!??.csv" "!prop!-day.csv"
)