Я использую приведенный ниже код для фильтрации файлов в зависимости от заголовков в файле.
Это работает как шарм, но у меня проблема с тем, что он принимает все файлы в $InputDirectory
.
Я хотел бы ограничить его, чтобы он занимал только файлы, которые 1-2 часа.
Есть два способа узнать дату этого процесса.
Имя файла содержит метку времени = XXXXXXXXXXX_XXXXXXXX_valuereport_YYYYMMDDhhmmss.csv
Метка времени создания файла (обратите внимание, что речь идет о 800К-1М файлах в каталоге, и каждый час добавляется еще больше, поэтому рекомендуется использовать самый быстрый способ.
Так как мне вставить что-то в мой код, чтобы он, кроме заголовка, принимал только файлы, которые <1-2 часа? * </p>
Извините за пример кода, я новичок в этом сайте и не уверен, как получить его в правильном порядке.
Пока ничего.
foreach ($FilePath in (Get-ChildItem $InputDirectory -File) | Select-Object -ExpandProperty FullName) {
$Header = Get-Content $FilePath -First 1
# test for a string in the header line that distincts it from the other files
if ($Header -match ';energy,Wh,') {
# the substring ';energy,Wh,' defines this file as a 'HeatMeter' file
Copy-Item -Path $FilePath -Destination $OutputPathHeat
} elseif ($Header -match ';fabrication-no,,inst-value,0,0,0;datetime,,inst-value,0,0,0;volume,m3') {
# the substring ';datetime,,inst-value,0,0,0;volume,m3' defines this file as a 'WaterMeter' file
Copy-Item -Path $FilePath -Destination $OutputPathWater
} else {
# if all key substrings above did not match, move to the 'Other' directory
Copy-Item -Path $FilePath -Destination $OutputPathOther
}