我有一个包含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"
)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句