Индикатор хода PowerShell не будет отображаться

Вопрос:

Я пытаюсь написать свой первый графический интерфейс PowerShell. В основном я пытаюсь запустить команду ffmpeg которая прекрасна и работает, но я не могу запустить индикатор выполнения. (Я новичок в этом.) Вот моя попытка.

cd C:\Users\brett\Documents\convert
$cmd = 'ffmpeg.exe'
$arg0 = '-i'
$arg1 = 'MASH_01.ts'
$arg2 = '-c:v'
$arg3 = '-c:a'
$arg4 = 'MASH_01.mp4'
$cf = 'copy'
$isFile = 'MASH_01.mp4'
if (-not(Test-Path -Path $isFile) -eq $false) {
echo "Shit Go"
del $isFile

& $cmd $arg0 $arg1 $arg2 $cf $arg3 $cf $arg4
for ($i = 1; $i -le 100; $i++) {
Start-Sleep -m 100
Write-Progress -Activity 'Progress Of The Coversion' -Status "$i Percent Complete" -PercentComplete $i;
}
} else {
& $cmd $arg0 $arg1 $arg2 $cf $arg3 $cf $arg4
for ($i = 1; $i -le 100; $i++) {
Start-Sleep -m 100
Write-Progress -Activity 'Progress Of The Coversion' -Status "$i Percent Complete" -PercentComplete $i;
}
}

Обновление: я не вижу ошибки, но индикатор выполнения работает после того, как файл был обработан, а не во время.

вот моя последняя попытка… но теперь я получаю ffmpeg, говоря, что “m” не является допустимым переключателем

cd C:\Users\brett\Documents\convert
$oldVideo = Get-ChildItem -Include @("*.ts")
Write-Host -ForegroundColor Green -Object $ArgumentList;
# Pause the script until user hits enter
$isFile = 'MASH_01.mp4'
if( -not(Test-Path -Path $isFile) -eq $false) {
echo "Shit Go"
del $isFile
}a
$tool = ffmpeg.exe
$ArgumentList = ''-i'+' '+'MASH_01.ts'+' '+'-c:v'+' '+'copy'+' '+'-c:a'+' '+'copy'+' '+'MASH_01.mp4';
Invoke-Expression $tool $ArgumentList
for($i = 1; $i -le 100; $i++){
ffmpeg $ArgumentList -m 100

Write-Progress -Activity 'Progress Of The Coversion' -Status "$i Percent Complete" -PercentComplete $i
'-SecondsRemaining $a -CurrentOperation
"$i% complete" '

}

Лучший ответ:

Чтобы увидеть, как работает работа, используйте:

cls
for($i =1; $i -le 100 ; $i++){
Start-Sleep -m 100
Write-Progress -Activity 'Progress Of The Conversion' -Status "$i Percent Complete" -PercentComplete $i
}

замените командлет start-sleep на свой собственный код, в идеале, проценты рассчитывают на что-то:

http://blogs.technet.com/b/kpalmvig/archive/2013/10/29/easy-progress-bar-in-your-powershell-scripts.aspx

Пример: 1. Поместите свои команды в txt файл – по одному в строке – вам не нужно & в текстовом файле 2. Используйте этот код для запуска:

    cls
    $file = get-content 'c:\yourFolder\yourTextFile.txt'

    $i = 1
    foreach($line in $file) {

      $pct = (($i / $file.count) * 100)
      Write-Progress -activity "Processing...$i" -status "Progress: $([int]$pct)%" -PercentComplete $pct

      &"$line"

      $i++

}

Оцените статью
TechArks.Ru
Добавить комментарий