Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
合并具有部分相同文件名的CSV文件_Csv_Batch File_Merge_Batch Processing - Fatal编程技术网

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

合并具有部分相同文件名的CSV文件,csv,batch-file,merge,batch-processing,Csv,Batch File,Merge,Batch Processing,我有一个包含aprox的目录。1500个csv文件,包含测量数据,如液位、压力、体积等。 对于每次测量,测量数据每小时导出一次。 因此,生成的Level文件名为Levelxx.csv,其中xx的范围为00-23 同样的方法适用于体积和压力以及所有其他测量,如volume00.csv-volume23.csv。 我想将给定度量的所有24个文件合并为一个,如level-day.csv、volume-day.csv等等 命令:“复制/b级别*.csv级别-day.csv/y”适用于一组, 但是,对于更

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

命令:“复制/b级别*.csv级别-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
或者您可以动态地发现属性的名称

假设每个属性始终有一个time 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"
)