Как получить порядковый номер в имени файла?

#php #csv

Вопрос:

Приведенный ниже код прекрасно работает для копирования и переименования файла с переменной датой, но теперь мне нужно добавить порядковый номер в ??? в формате GRPROMO_0000_».$дата->(‘Ymd-Его’). «->???.ГОТОВЫ. Возможно ли это вообще, когда дата также меняется?

В конце файл должен выглядеть примерно так: GRPROMO_0000_20210910-155301-145.ГОТОВО

Заранее благодарю вас за помощь…

 <?php

$date = new DateTime();

$file = '/var/www/html/stock/BRNCH0.csv';
$newfile = '/var/www/html/stock/csvs/BRNCH0.csv';
$file2 = '/var/www/html/stock/csvs/BRNCH0.csv';
if(!copy($file, $newfile)){
    echo "failed to copy $file";
}
else{
    echo "copied $file into $newfilen";
    rename($file2 , "/var/www/html/stock/csvs/GRPROMO_0000_".$date->format('Ymd-His'). "-???.READY");
}
?>
 

Я обновил свой код. Он работает с файлом, в котором нет даты, или дата совпадает с GRPROMO_0000_20210913-094044-01.csv GRPROMO_0000_20210913-094044-02.csv.
Но с датой изменения мой код думает, что это новый файл, и неправильно увеличивает его GRPROMO_0000_20210913-100457-01.ГОТОВ GRPROMO_0000_20210913-100734-01.ГОТОВ GRPROMO_0000_20210913-101015-01.ГОТОВ. Пожалуйста, помогите.
Спасибо

 <?php
$file = '/var/www/html/stock/BRNCH0.csv'; //orignal file
$newfile = '/var/www/html/stock/csvs/BRNCH0.csv'; //copy orignal file to this Dir
$date = new DateTime();
$dir1 = '/var/www/html/stock/csvs/'; // read folder name 
$dir2 = '/var/www/html/stock/csc/'; // move to folder name
if(!copy($file, $newfile)){
    echo "failed to copy $file";
}
else{
    echo "copied $file into $newfilen";
}
$filearr = scandir ($dir1); // read folder
Unset ($filearr [0]); // remove redundant elements
unset($filearr[1]);
$filearr = array_values ($filearr); // start the array from 0 and increment it by 1
$filecount = count ($filearr); // number of files
$onenum = 1; // start number
$maxnum = $onenum   $filecount; // max cycles
$title ="GRPROMO_0000_".$date->format('Ymd-His')."-"; // file title
$ext = '.READY'; // file suffix
for ($i = $onenum; $i <= $maxnum; $i  ) {
    for ($j=0; $j < $filecount ; $j  ) {
        if($i<10){
            $i = '0'.$i;
        }
        rename($dir1.$filearr[$j],$dir2.$title.$i.$ext);
        $i  ;
    }
}

?>
 

Комментарии:

1. используйте цикл, который увеличивает переменную счетчика, добавляет ее к имени файла и проверяет, существует ли файл. Когда вы найдете несуществующий номер, используйте это имя файла.

2. Есть еще какие-нибудь идеи?