Вычисление Скорости Соединения/Загрузки

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

Кроме того, поскольку ваши шаблоны на самом деле не являются регулярными выражениями, я использовал параметр -SimpleMatch в Select-String.

Этот код должен делать именно это.

$source      = 'Z:\Documents\16_Med._App\Aufträge\RuheEKG_24HBP_Skript\Ursprung_test'
$destination = 'Z:\Documents\16_Med._App\Aufträge\RuheEKG_24HBP_Skript\24BHD'
$toDelete    = 'Z:\Documents\16_Med._App\Aufträge\RuheEKG_24HBP_Skript\ToDelete'
$pattern1    = '24BHD'
$pattern2    = 'RuheEKG'

# create the destination paths if they do not exist
if (!(Test-Path -Path $destination -PathType Container)) {
    Write-Host "Creating folder '$destination'"
    New-Item -Path $destination -ItemType 'Directory' -Force | Out-Null
}
if (!(Test-Path -Path $toDelete -PathType Container)) {
    Write-Host "Creating folder '$toDelete'"
    New-Item -Path $toDelete -ItemType 'Directory' -Force | Out-Null
}

# get an array of full path and filenames.
# if they all have the same extension, it would be wise to add the '-Filter' parameter..
$allFiles = @(Get-ChildItem $source -File | Select-Object -ExpandProperty FullName)

foreach($file in $allFiles) {
    # get the file content as array so we can reuse it and update the line(s) with the new bitmap path(s)
    $content = Get-Content -Path $file

    # first decide on the destination. '-Quit' returns $true or $false
    # if both $pattern1 AND $pattern2 are present, move stuff to $destination
    if (($content | Select-String -Pattern $pattern1 -SimpleMatch -Quiet) -and 
        ($content | Select-String -Pattern $pattern2 -SimpleMatch -Quiet)) {
        $dest = $destination
    }
    else {
        $dest = $toDelete
    }

    # next check if the file contains path(s) for referenced (bitmap) file((s)
    $refCount = 0
    $content | Select-String -Pattern '(^.*)([A-Z]:\\.+$)' -AllMatches | ForEach-Object {
        # each '

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

Кроме того, поскольку ваши шаблоны на самом деле не являются регулярными выражениями, я использовал параметр -SimpleMatch в Select-String.

Этот код должен делать именно это.

[110]


РЕДАКТИРОВАТЬ


Согласно вашим комментариям:

Я проверил это, как показано ниже.

Я создал пару папок на моем диске D: и поместил туда файлы:

+---Fnkraf
    \---Bitmaps
    |       PIC0053.BMP
    |       PIC0057.BMP
    |       PIC0571.BMP
    |       PIC0572.BMP
    |
    \---MasterFiles
            File1.txt
            File2.txt
            File3.txt

Папка Bitmaps содержит ссылки на растровые файлы.
В папку MasterFiles я помещаю эти файлы:

File1.txt
Этот файл действителен, поскольку он содержит оба шаблона ключевых слов и имеет два ссылки на растровые файлы. Оба упомянутых файла присутствуют. Они перейдут в папку 24BHD.

24BHD
RuheEKG

01091521
0249153EKG 10 Sekunden
0619154D:\Fnkraf\Bitmaps\PIC0053.BMP
0619155D:\Fnkraf\Bitmaps\PIC0057.BMP
0118410HF

File2.txt
Этот файл действителен, поскольку он содержит оба шаблона ключевых слов и имеет два ссылочных файла растрового изображения. Один из которых выдаст предупреждение, потому что его нельзя найти. Они перейдут в папку 24BHD.

24BHD
RuheEKG

01091521
0249153EKG 15 Sekunden
0719154D:\Fnkraf\Bitmaps\PIC0571.BMP
0719157D:\Fnkraf\Bitmaps\DOESNOTEXIST.BMP
0118410HG

File3.txt
Этот файл недопустим, поскольку содержит только один шаблон ключевых слов. Он имеет доступный для поиска файл растрового изображения. Они должны идти в папку toDelete

25BHD
RuheEKG

01091521
0249153EKG 17 Sekunden
0619154D:\Fnkraf\Bitmaps\PIC0572.BMP
0118410HG

После запуска сценария, это результат:

+---Fnkraf
    \---24BHD
    |       File1.txt
    |       File2.txt
    |       PIC0053.BMP
    |       PIC0057.BMP
    |       PIC0571.BMP
    |
    +---Bitmaps
    +---MasterFiles
    \---ToDelete
            File3.txt
            PIC0572.BMP

Вы можете увидеть как пункт назначения 24BHD, так и папка toDelete будет создана, и мастер-файлы File1.txt и File2.txt окажутся в месте назначения вместе с их ссылочными растровыми файлами.
File3.txt не прошел проверку шаблона, как ожидалось, и был перемещен в папку toDelete, опять же с указанным файлом растрового изображения.

Теперь, если вы откроете перемещенные текстовые файлы, вы увидите, что пути к ссылочным файлам были обновлены в соответствии с новым местоположением растровых изображений.

File1.txt

24BHD
RuheEKG

01091521
0249153EKG 10 Sekunden
0619154D:\Fnkraf\24BHD\PIC0053.BMP
0619155D:\Fnkraf\24BHD\PIC0057.BMP
0118410HF

То же самое было сделано для других файлов. Единственной ссылкой, которая была НЕ обновлена, является файл растрового изображения, который не может быть найден в File2.txt :

24BHD
RuheEKG

01091521
0249153EKG 15 Sekunden
0719154D:\Fnkraf\24BHD\PIC0571.BMP
0719157D:\Fnkraf\Bitmaps\DOESNOTEXIST.BMP
0118410HG

Надеюсь, что это все объясняет. [1145 ]' automatic variable in here holds a MatchInfo object. # see: https://docs.microsoft.com/en-us/dotnet/api/microsoft.powershell.commands.matchinfo?view=pscore-6.0.0 $prefix =

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

Кроме того, поскольку ваши шаблоны на самом деле не являются регулярными выражениями, я использовал параметр -SimpleMatch в Select-String.

Этот код должен делать именно это.

[110]


РЕДАКТИРОВАТЬ


Согласно вашим комментариям:

Я проверил это, как показано ниже.

Я создал пару папок на моем диске D: и поместил туда файлы:

+---Fnkraf
    \---Bitmaps
    |       PIC0053.BMP
    |       PIC0057.BMP
    |       PIC0571.BMP
    |       PIC0572.BMP
    |
    \---MasterFiles
            File1.txt
            File2.txt
            File3.txt

Папка Bitmaps содержит ссылки на растровые файлы.
В папку MasterFiles я помещаю эти файлы:

File1.txt
Этот файл действителен, поскольку он содержит оба шаблона ключевых слов и имеет два ссылки на растровые файлы. Оба упомянутых файла присутствуют. Они перейдут в папку 24BHD.

24BHD
RuheEKG

01091521
0249153EKG 10 Sekunden
0619154D:\Fnkraf\Bitmaps\PIC0053.BMP
0619155D:\Fnkraf\Bitmaps\PIC0057.BMP
0118410HF

File2.txt
Этот файл действителен, поскольку он содержит оба шаблона ключевых слов и имеет два ссылочных файла растрового изображения. Один из которых выдаст предупреждение, потому что его нельзя найти. Они перейдут в папку 24BHD.

24BHD
RuheEKG

01091521
0249153EKG 15 Sekunden
0719154D:\Fnkraf\Bitmaps\PIC0571.BMP
0719157D:\Fnkraf\Bitmaps\DOESNOTEXIST.BMP
0118410HG

File3.txt
Этот файл недопустим, поскольку содержит только один шаблон ключевых слов. Он имеет доступный для поиска файл растрового изображения. Они должны идти в папку toDelete

25BHD
RuheEKG

01091521
0249153EKG 17 Sekunden
0619154D:\Fnkraf\Bitmaps\PIC0572.BMP
0118410HG

После запуска сценария, это результат:

+---Fnkraf
    \---24BHD
    |       File1.txt
    |       File2.txt
    |       PIC0053.BMP
    |       PIC0057.BMP
    |       PIC0571.BMP
    |
    +---Bitmaps
    +---MasterFiles
    \---ToDelete
            File3.txt
            PIC0572.BMP

Вы можете увидеть как пункт назначения 24BHD, так и папка toDelete будет создана, и мастер-файлы File1.txt и File2.txt окажутся в месте назначения вместе с их ссылочными растровыми файлами.
File3.txt не прошел проверку шаблона, как ожидалось, и был перемещен в папку toDelete, опять же с указанным файлом растрового изображения.

Теперь, если вы откроете перемещенные текстовые файлы, вы увидите, что пути к ссылочным файлам были обновлены в соответствии с новым местоположением растровых изображений.

File1.txt

24BHD
RuheEKG

01091521
0249153EKG 10 Sekunden
0619154D:\Fnkraf\24BHD\PIC0053.BMP
0619155D:\Fnkraf\24BHD\PIC0057.BMP
0118410HF

То же самое было сделано для других файлов. Единственной ссылкой, которая была НЕ обновлена, является файл растрового изображения, который не может быть найден в File2.txt :

24BHD
RuheEKG

01091521
0249153EKG 15 Sekunden
0719154D:\Fnkraf\24BHD\PIC0571.BMP
0719157D:\Fnkraf\Bitmaps\DOESNOTEXIST.BMP
0118410HG

Надеюсь, что это все объясняет. [1145 ].Matches[0].Groups[1].Value # get the prefix of the line (something like '0619154') $refPath =

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

Кроме того, поскольку ваши шаблоны на самом деле не являются регулярными выражениями, я использовал параметр -SimpleMatch в Select-String.

Этот код должен делать именно это.

[110]


РЕДАКТИРОВАТЬ


Согласно вашим комментариям:

Я проверил это, как показано ниже.

Я создал пару папок на моем диске D: и поместил туда файлы:

+---Fnkraf
    \---Bitmaps
    |       PIC0053.BMP
    |       PIC0057.BMP
    |       PIC0571.BMP
    |       PIC0572.BMP
    |
    \---MasterFiles
            File1.txt
            File2.txt
            File3.txt

Папка Bitmaps содержит ссылки на растровые файлы.
В папку MasterFiles я помещаю эти файлы:

File1.txt
Этот файл действителен, поскольку он содержит оба шаблона ключевых слов и имеет два ссылки на растровые файлы. Оба упомянутых файла присутствуют. Они перейдут в папку 24BHD.

24BHD
RuheEKG

01091521
0249153EKG 10 Sekunden
0619154D:\Fnkraf\Bitmaps\PIC0053.BMP
0619155D:\Fnkraf\Bitmaps\PIC0057.BMP
0118410HF

File2.txt
Этот файл действителен, поскольку он содержит оба шаблона ключевых слов и имеет два ссылочных файла растрового изображения. Один из которых выдаст предупреждение, потому что его нельзя найти. Они перейдут в папку 24BHD.

24BHD
RuheEKG

01091521
0249153EKG 15 Sekunden
0719154D:\Fnkraf\Bitmaps\PIC0571.BMP
0719157D:\Fnkraf\Bitmaps\DOESNOTEXIST.BMP
0118410HG

File3.txt
Этот файл недопустим, поскольку содержит только один шаблон ключевых слов. Он имеет доступный для поиска файл растрового изображения. Они должны идти в папку toDelete

25BHD
RuheEKG

01091521
0249153EKG 17 Sekunden
0619154D:\Fnkraf\Bitmaps\PIC0572.BMP
0118410HG

После запуска сценария, это результат:

+---Fnkraf
    \---24BHD
    |       File1.txt
    |       File2.txt
    |       PIC0053.BMP
    |       PIC0057.BMP
    |       PIC0571.BMP
    |
    +---Bitmaps
    +---MasterFiles
    \---ToDelete
            File3.txt
            PIC0572.BMP

Вы можете увидеть как пункт назначения 24BHD, так и папка toDelete будет создана, и мастер-файлы File1.txt и File2.txt окажутся в месте назначения вместе с их ссылочными растровыми файлами.
File3.txt не прошел проверку шаблона, как ожидалось, и был перемещен в папку toDelete, опять же с указанным файлом растрового изображения.

Теперь, если вы откроете перемещенные текстовые файлы, вы увидите, что пути к ссылочным файлам были обновлены в соответствии с новым местоположением растровых изображений.

File1.txt

24BHD
RuheEKG

01091521
0249153EKG 10 Sekunden
0619154D:\Fnkraf\24BHD\PIC0053.BMP
0619155D:\Fnkraf\24BHD\PIC0057.BMP
0118410HF

То же самое было сделано для других файлов. Единственной ссылкой, которая была НЕ обновлена, является файл растрового изображения, который не может быть найден в File2.txt :

24BHD
RuheEKG

01091521
0249153EKG 15 Sekunden
0719154D:\Fnkraf\24BHD\PIC0571.BMP
0719157D:\Fnkraf\Bitmaps\DOESNOTEXIST.BMP
0118410HG

Надеюсь, что это все объясняет. [1145 ].Matches[0].Groups[2].Value # get the bitmap file path if (Test-Path -Path $refPath -PathType Leaf) { Write-Host "Moving referenced file '$refPath' to '$dest'" Move-Item -Path $refPath -Destination $dest -Force # recreate the line to match the new location of the bitmap file Write-Host "Updating path in '$file' to '$refPath'" $refFile = Split-Path $refPath -Leaf $refPath = Join-Path -Path $dest -ChildPath $refFile $content[

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

Кроме того, поскольку ваши шаблоны на самом деле не являются регулярными выражениями, я использовал параметр -SimpleMatch в Select-String.

Этот код должен делать именно это.

[110]


РЕДАКТИРОВАТЬ


Согласно вашим комментариям:

Я проверил это, как показано ниже.

Я создал пару папок на моем диске D: и поместил туда файлы:

+---Fnkraf
    \---Bitmaps
    |       PIC0053.BMP
    |       PIC0057.BMP
    |       PIC0571.BMP
    |       PIC0572.BMP
    |
    \---MasterFiles
            File1.txt
            File2.txt
            File3.txt

Папка Bitmaps содержит ссылки на растровые файлы.
В папку MasterFiles я помещаю эти файлы:

File1.txt
Этот файл действителен, поскольку он содержит оба шаблона ключевых слов и имеет два ссылки на растровые файлы. Оба упомянутых файла присутствуют. Они перейдут в папку 24BHD.

24BHD
RuheEKG

01091521
0249153EKG 10 Sekunden
0619154D:\Fnkraf\Bitmaps\PIC0053.BMP
0619155D:\Fnkraf\Bitmaps\PIC0057.BMP
0118410HF

File2.txt
Этот файл действителен, поскольку он содержит оба шаблона ключевых слов и имеет два ссылочных файла растрового изображения. Один из которых выдаст предупреждение, потому что его нельзя найти. Они перейдут в папку 24BHD.

24BHD
RuheEKG

01091521
0249153EKG 15 Sekunden
0719154D:\Fnkraf\Bitmaps\PIC0571.BMP
0719157D:\Fnkraf\Bitmaps\DOESNOTEXIST.BMP
0118410HG

File3.txt
Этот файл недопустим, поскольку содержит только один шаблон ключевых слов. Он имеет доступный для поиска файл растрового изображения. Они должны идти в папку toDelete

25BHD
RuheEKG

01091521
0249153EKG 17 Sekunden
0619154D:\Fnkraf\Bitmaps\PIC0572.BMP
0118410HG

После запуска сценария, это результат:

+---Fnkraf
    \---24BHD
    |       File1.txt
    |       File2.txt
    |       PIC0053.BMP
    |       PIC0057.BMP
    |       PIC0571.BMP
    |
    +---Bitmaps
    +---MasterFiles
    \---ToDelete
            File3.txt
            PIC0572.BMP

Вы можете увидеть как пункт назначения 24BHD, так и папка toDelete будет создана, и мастер-файлы File1.txt и File2.txt окажутся в месте назначения вместе с их ссылочными растровыми файлами.
File3.txt не прошел проверку шаблона, как ожидалось, и был перемещен в папку toDelete, опять же с указанным файлом растрового изображения.

Теперь, если вы откроете перемещенные текстовые файлы, вы увидите, что пути к ссылочным файлам были обновлены в соответствии с новым местоположением растровых изображений.

File1.txt

24BHD
RuheEKG

01091521
0249153EKG 10 Sekunden
0619154D:\Fnkraf\24BHD\PIC0053.BMP
0619155D:\Fnkraf\24BHD\PIC0057.BMP
0118410HF

То же самое было сделано для других файлов. Единственной ссылкой, которая была НЕ обновлена, является файл растрового изображения, который не может быть найден в File2.txt :

24BHD
RuheEKG

01091521
0249153EKG 15 Sekunden
0719154D:\Fnkraf\24BHD\PIC0571.BMP
0719157D:\Fnkraf\Bitmaps\DOESNOTEXIST.BMP
0118410HG

Надеюсь, что это все объясняет. [1145 ].LineNumber -1] = $prefix + $refPath $refCount++ } else { Write-Warning "Referenced file '$refPath' not found" } if ($refCount) { # we handled referenced files, so write the new content back to the original file Set-Content -Path $file -Value $content -Force } } # finally move the file to its new destination Write-Host "Moving file '$file' to '$dest'" Move-Item -Path $file -Destination $dest -Force }


РЕДАКТИРОВАТЬ


Согласно вашим комментариям:

Я проверил это, как показано ниже.

Я создал пару папок на моем диске D: и поместил туда файлы:

+---Fnkraf
    \---Bitmaps
    |       PIC0053.BMP
    |       PIC0057.BMP
    |       PIC0571.BMP
    |       PIC0572.BMP
    |
    \---MasterFiles
            File1.txt
            File2.txt
            File3.txt

Папка Bitmaps содержит ссылки на растровые файлы.
В папку MasterFiles я помещаю эти файлы:

File1.txt
Этот файл действителен, поскольку он содержит оба шаблона ключевых слов и имеет два ссылки на растровые файлы. Оба упомянутых файла присутствуют. Они перейдут в папку 24BHD.

24BHD
RuheEKG

01091521
0249153EKG 10 Sekunden
0619154D:\Fnkraf\Bitmaps\PIC0053.BMP
0619155D:\Fnkraf\Bitmaps\PIC0057.BMP
0118410HF

File2.txt
Этот файл действителен, поскольку он содержит оба шаблона ключевых слов и имеет два ссылочных файла растрового изображения. Один из которых выдаст предупреждение, потому что его нельзя найти. Они перейдут в папку 24BHD.

24BHD
RuheEKG

01091521
0249153EKG 15 Sekunden
0719154D:\Fnkraf\Bitmaps\PIC0571.BMP
0719157D:\Fnkraf\Bitmaps\DOESNOTEXIST.BMP
0118410HG

File3.txt
Этот файл недопустим, поскольку содержит только один шаблон ключевых слов. Он имеет доступный для поиска файл растрового изображения. Они должны идти в папку toDelete

25BHD
RuheEKG

01091521
0249153EKG 17 Sekunden
0619154D:\Fnkraf\Bitmaps\PIC0572.BMP
0118410HG

После запуска сценария, это результат:

+---Fnkraf
    \---24BHD
    |       File1.txt
    |       File2.txt
    |       PIC0053.BMP
    |       PIC0057.BMP
    |       PIC0571.BMP
    |
    +---Bitmaps
    +---MasterFiles
    \---ToDelete
            File3.txt
            PIC0572.BMP

Вы можете увидеть как пункт назначения 24BHD, так и папка toDelete будет создана, и мастер-файлы File1.txt и File2.txt окажутся в месте назначения вместе с их ссылочными растровыми файлами.
File3.txt не прошел проверку шаблона, как ожидалось, и был перемещен в папку toDelete, опять же с указанным файлом растрового изображения.

Теперь, если вы откроете перемещенные текстовые файлы, вы увидите, что пути к ссылочным файлам были обновлены в соответствии с новым местоположением растровых изображений.

File1.txt

24BHD
RuheEKG

01091521
0249153EKG 10 Sekunden
0619154D:\Fnkraf\24BHD\PIC0053.BMP
0619155D:\Fnkraf\24BHD\PIC0057.BMP
0118410HF

То же самое было сделано для других файлов. Единственной ссылкой, которая была НЕ обновлена, является файл растрового изображения, который не может быть найден в File2.txt :

24BHD
RuheEKG

01091521
0249153EKG 15 Sekunden
0719154D:\Fnkraf\24BHD\PIC0571.BMP
0719157D:\Fnkraf\Bitmaps\DOESNOTEXIST.BMP
0118410HG

Надеюсь, что это все объясняет. [1145 ]

11
задан Chris Hanson 16 December 2008 в 08:29
поделиться

4 ответа

Как только Вы запускаете загрузку, получаете текущее системное время и храните ее как "время начала". Затем все, что необходимо сделать для вычисления скорости передачи в любой точке во время передачи, должно посмотреть на системное время снова и использовать ее в качестве "текущего времени" для вычисления общего времени, проведенного до сих пор:

transfer_speed = bytes_transferred / ( current_time - start_time)

Вы, вероятно, хотите использовать второй или точность миллисекунды с временами и конечно можете умножить результат на 8, если Вы хотите биты/секунда.

Так как Вы используете Какао, Вы могли использовать класс NSDate для получения меток времени. Например, используйте следующее при запуске передачи:

NSTimeInterval start = [NSDate timeIntervalSinceReferenceDate];

Затем периодически проверяйте скорость передачи при помощи:

double speed = bytesTransferred / ([NSDate timeIntervalSinceReferenceDate] - start);
20
ответ дан 3 December 2019 в 00:46
поделиться

Необходимо будет знать

  1. Байты отправляются с начала (Вычислить среднюю скорость передачи)

  2. Байты, отправленные с тех пор в последний раз вторыми (Для вычисления текущей скорости передачи.)

    Это может быть легко сделано, если Вы знаете байты, отправленные с начала. (Новые байты, отправленные с начала - Байты, отправленные с начала 1 секунду назад)

  3. Общий размер файла (Для вычисления процента прогресса.)

    (Байты, переданные / Общее количество байтов)

1
ответ дан 3 December 2019 в 00:46
поделиться

Отслеживайте время, когда передача берет. Скорость передачи является просто переданными/секундами байтами, протек, другими словами, байты в секунду. Вам не нужен общий размер для этого. (Можно также показать завершенный %, который является байтами, передал/составил bytes*100),

0
ответ дан 3 December 2019 в 00:46
поделиться

Наивный путь bytes_downloaded / (now - start_time), но это становится неточным, если скорость соединения колеблется дико, или если пользователь запускает другую загрузку (возможно, в другом приложении) на полпути посредством Вашей загрузки. Оба из них могут произойти, если пользователь выполняет поток в фоновом режиме.

Лучший путь (хотя тяжелее реализовать) состоит в том, чтобы сохранить массив периодических образцов и представить среднее число.

Начните с массивом, содержащим 0. Массив имеет образцы, и каждый образец является числом байтов, загруженных начиная с предыдущего образца. Затем запустите загрузку.

Каждую полусекунду (можно попробовать различные интервалы), имейте размеры, сколько байтов Вы загрузили, затем вычитаете предыдущее общее количество из этого нового общего количества. Добавьте различие как новый последний элемент в массиве. Если это выращивает массив вне определенного размера, сократите первый элемент (самый старый образец). Затем представьте среднее число всех образцов.

Необходимо сохранить где-нибудь между ценностью 2–5 секунд образцов, и интервал должен быть где-нибудь между 0,5 и 1 секундой (это - компромисс между валютой и производительностью).

Можно также хотеть удалить первый элемент из массива после получения его, если это - нуль. Это делает Ваш стартовый репортаж более точным и помогает Вам восстановиться более быстро с остановов, так как Вы не включаете старый, обнуляет в среднем числе.

40
ответ дан 3 December 2019 в 00:46
поделиться