Форум программистов, компьютерный форум, киберфорум
PowerShell
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.50/18: Рейтинг темы: голосов - 18, средняя оценка - 4.50
14 / 14 / 5
Регистрация: 13.07.2013
Сообщений: 230

Многократный запуск программы с множеством параметров и путями с пробелами, запись прогресса работы в лог файл

30.05.2022, 17:41. Показов 4913. Ответов 67
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В соседней теме про CMD выяснилось что командная строка там не умеет,
зато умеет PS

подскажите, как лучше реализовать такое

вот пример, нужно выполнить подобные команды последовательно, для каждой сохранив отдельный лог

aMod.exe --profile main10 --level-idc 5.1 --crf 18.0 --preset medium --ref 4 --no-cutree --deblock -2:-2 --merange 57 --max-merge 3 --rd 3 --ctu 32 --early-skip --bframes 6 --psy-rd 2.00 --frame-threads 2 --qcomp 0.68 --subme 3 --me 3 --rc-lookahead 20 --min-keyint 24 --keyint 240 --range limited --tu-inter-depth 3 --tu-intra-depth 3 --limit-tu 4 --no-strong-intra-smoothing --rdoq-level 1 --no-sao --no-sao-non-deblock --early-skip --rskip 1 --aud --repeat-headers --hrd --output-depth 10 --hdr-opt --colorprim bt2020 --transfer smpte2084 --colormatrix bt2020nc --master-display "G(13250,34500)B(7500,3000)R(34000,16000 )WP(15635,16450)L(40000000,50)" --max-cll=0,0 --chromaloc 2 --output "D:\TEST\1.hevc" "D:\TEST\1.avs"

aMod.exe --profile main10 --level-idc 5.1 --crf 18.0 --preset medium --ref 4 --no-cutree --deblock -2:-2 --merange 57 --max-merge 3 --rd 3 --ctu 32 --early-skip --bframes 6 --psy-rd 2.00 --frame-threads 2 --qcomp 0.68 --subme 3 --me 3 --rc-lookahead 20 --min-keyint 24 --keyint 240 --range limited --tu-inter-depth 3 --tu-intra-depth 3 --limit-tu 4 --no-strong-intra-smoothing --rdoq-level 1 --no-sao --no-sao-non-deblock --early-skip --rskip 1 --aud --repeat-headers --hrd --output-depth 10 --hdr-opt --colorprim bt2020 --transfer smpte2084 --colormatrix bt2020nc --master-display "G(13250,34500)B(7500,3000)R(34000,16000 )WP(15635,16450)L(40000000,50)" --max-cll=0,0 --chromaloc 2 --output "D:\TEST\2.hevc" "D:\TEST\2.avs"
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.05.2022, 17:41
Ответы с готовыми решениями:

Запуск программы по Task sheduler и запись в лог-файл
Имеется простое консольное приложение, делающее некоторые операции в бд. После выполнения операций она пишет некоторые данные в лог-файл,...

запуск приложения с множеством параметров
Добрый день. У меня дома 2 компа и использую 3proxy, но просто его запустить не получаеться нужно много параметров. к делу: нужно...

Запуск сторонней программы, со своими относительными путями
Знаю ShellExecute. Но есть серьезная проблема которая заключается в том что у запускаемой программы относительные пути идут относительно...

67
14 / 14 / 5
Регистрация: 13.07.2013
Сообщений: 230
02.06.2022, 16:20  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от volodin661 Посмотреть сообщение
предусмотрел скрипт-блок ( см. строку 6 exec-amod.ps1)
не совсем понимаю как он работает
я себе это представляю примерно так.
есть параметры
prog = exe шник запуска
param = строка параметров, полученная при считывании
in = входной
out = выходной файл

а уже в конце что то типа
if prog = amod
str = prog + ' ' + param + ' --output ' + out + ' ' + in
говнокод конечно, но наглядно ))))

а для того же avs2yuv64 просто чуть другая строка
if prog = avs2yuv64
str = prog + ' ' + in + '-o - | x265 - ' + param + out

идинственное что x265 может меняться на другую команду и это либо тоже как то передать через JSON
либо тупо ручками прописывать

Добавлено через 2 минуты
Цитата Сообщение от volodin661 Посмотреть сообщение
с настоящим amod.exe работает ? ( вполне допускаю, что какие-то параметры ему могли 'не понравится'; '=0,0' итп )
Ну как сказать... ошибок нет, но и ничего не происходит )))

Code
1
2
3
PS C:\amod> ./exec-amod set1.json "D:\HDR TEST\avengers\10bit HDR_med.hevc" "D:\HDR TEST\avengers\10bit HDR.avs"
PS C:\amod> ./exec-amod set1.json D:\TEST\out.hevc D:\TEST\in.avs
PS C:\amod>
ноль реакции

так ... а оно должно работать?
строка же формируется неправильно

содержание __amod.log

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
--profile
main10
--level-idc
5.1
--crf
18
--preset
medium
--ref
4
--no-cutree
--deblock
-2:-2
--merange
57
--max-merge
3
--rd
3
--ctu
32
--early-skip
--bframes
6
--psy-rd
2.0
--frame-threads
2
--qcomp
0.68
--subme
3
--me
3
--rc-lookahead
20
--min-keyint
24
--keyint
240
--range
limited
--tu-inter-depth
3
--tu-intra-depth
3
--limit-tu
4
--no-strong-intra-smoothing
--rdoq-level
1
--no-sao
--no-sao-non-deblock
--rskip
1
--aud
--repeat-headers
--hrd
--output-depth
10
--hdr-opt
--colorprim
bt2020
--transfer
spte2084
--colormatrix
bt2020nc
--master-display
G(13250,34500)B(7500,3000)R(34000,16000)WP(15635,16450)L(40000000,50)
--max-cll
=0,0
--chromaloc
2
--output
D:\TEST\out.hevc
D:\TEST\in.avs
а должно быть в одну строку все
0
 Аватар для volodin661
6796 / 2293 / 348
Регистрация: 10.12.2013
Сообщений: 7,920
02.06.2022, 16:32
если добавить при запуске опцию -debug,
то вывалится строка сформированных параметров,
скопировать, приписать вначале соответств. amod.exe и запустить вручную.

Добавлено через 3 минуты
пс:
Скрипт-блок работает так:


PowerShell
1
amod.exe set1.json outfile infile { param($o)  $o.rskip = 2; $o.colorprim = 'bt-256' }
0
14 / 14 / 5
Регистрация: 13.07.2013
Сообщений: 230
02.06.2022, 16:36  [ТС]
Цитата Сообщение от volodin661 Посмотреть сообщение
если добавить при запуске опцию -debug,
то вывалится строка сформированных параметров,
скопировать, приписать вначале соответств. amod.exe и запустить вручную.
сделано
Code
1
2
3
4
5
6
7
ОТЛАДКА:  --profile main10 --level-idc 5.1 --crf 18 --preset medium --ref 4 --no-cutree  --deblock -2:-2 --merange 57
--max-merge 3 --rd 3 --ctu 32 --early-skip  --bframes 6 --psy-rd 2.0 --frame-threads 2 --qcomp 0.68 --subme 3 --me 3
--rc-lookahead 20 --min-keyint 24 --keyint 240 --range limited  --tu-inter-depth 3 --tu-intra-depth 3 --limit-tu 4
--no-strong-intra-smoothing  --rdoq-level 1 --no-sao  --no-sao-non-deblock  --rskip 1 --aud  --repeat-headers  --hrd
--output-depth 10 --hdr-opt  --colorprim bt2020 --transfer spte2084 --colormatrix bt2020nc --master-display
"G(13250,34500)B(7500,3000)R(34000,16000)WP(15635,16450)L(40000000,50)" --max-cll =0,0 --chromaloc 2 --output "D:\HDR
TEST\avengers\10bit HDR_med.hevc" "D:\HDR TEST\avengers\10bit HDR.avs"
запускаю
и не получается, PS при выводе отладки бьет ее на отдельные строки, чуть руками правлю и запускаю

x265 [error]: invalid argument: transfer = spte2084

ошибка в JSON
нужно smpte2084

исправляю и... работает

Добавлено через 1 минуту
Цитата Сообщение от volodin661 Посмотреть сообщение
Скрипт-блок работает так:
PowerShell
1
amod.exe set1.json outfile infile { param($o)  $o.rskip = 2; $o.colorprim = 'bt-256' }
все равно не понимаю ) мне просто такой синтаксис незнаком, но если речь про добавления параметров
то проще править JSON или создать разные под разные задачи, там просто удобнее править
0
 Аватар для volodin661
6796 / 2293 / 348
Регистрация: 10.12.2013
Сообщений: 7,920
02.06.2022, 16:47
Цитата Сообщение от pozitiv_rus Посмотреть сообщение
все равно не понимаю

ну вот жеж, живой пример !:

PowerShell
1
exec-amod  set1.json "D:\HDR TEST\avengers\10bit HDR_med.hevc" "D:\HDR TEST\avengers\10bit HDR.avs" { param($o)  $o.transfer = 'smpte2084' }
Добавлено через 4 минуты
Вот зачем пробел нужен в 'HDR TEST' ?

Вот так: HDR_TEST - совсем нельзя, религия не позволяет ?
0
14 / 14 / 5
Регистрация: 13.07.2013
Сообщений: 230
02.06.2022, 16:58  [ТС]
Цитата Сообщение от volodin661 Посмотреть сообщение
ну вот жеж, живой пример !:
да, вот так уже понятнее )))
Цитата Сообщение от volodin661 Посмотреть сообщение
Вот зачем пробел нужен в 'HDR TEST' ?
мне не зачем, но людям бывает не объяснишь, и когда скачаваешь исходники, а там пробелы?
а переименовать я не могу, так как неделю по правилам сервиса должен сидировать скаченное ))) значит и изменять имена не могу
ну или когда кодирую уже из своей коллекции, а медиаплееру нужны нормальные названия с пробелами для индексации

после правки JSON кодирование запускается прямо из PS
но...
PS не выводит никакой информации, которую выводит сам aMod,
выполнение просто проходит в фоне
0
 Аватар для volodin661
6796 / 2293 / 348
Регистрация: 10.12.2013
Сообщений: 7,920
02.06.2022, 17:02
А что в лог-файле ?

Добавлено через 1 минуту
Цитата Сообщение от pozitiv_rus Посмотреть сообщение
значит и изменять имена не могу
чой-то не можешь, а link на что ?

https://en.wikipedia.org/wiki/Symbolic_link
0
14 / 14 / 5
Регистрация: 13.07.2013
Сообщений: 230
02.06.2022, 17:04  [ТС]
Цитата Сообщение от volodin661 Посмотреть сообщение
А что в лог-файле ?
ничего... он создается, но пустой

Добавлено через 56 секунд
Цитата Сообщение от volodin661 Посмотреть сообщение
чой-то не можешь, а link на что ?
не понимаю о чем речь )))

мне не сложно написать путь с пробелами в ковычках
зато такой способ будет работать всегда и не надо париться с пробелами
0
 Аватар для volodin661
6796 / 2293 / 348
Регистрация: 10.12.2013
Сообщений: 7,920
02.06.2022, 17:05
хм-м..

ОК, придётся мне взять наст. amod.exe, глянуть, что происходит, иначе этот кошмар не закончится.

попозже
0
14 / 14 / 5
Регистрация: 13.07.2013
Сообщений: 230
02.06.2022, 17:07  [ТС]
Цитата Сообщение от volodin661 Посмотреть сообщение
ОК, придётся мне взять наст. amod.exe, глянуть, что происходит, иначе этот кошмар не закончится.
тогда я так полагаю придется взять еще и видео, для запуска кодирования в amod
0
 Аватар для volodin661
6796 / 2293 / 348
Регистрация: 10.12.2013
Сообщений: 7,920
02.06.2022, 17:19
Цитата Сообщение от pozitiv_rus Посмотреть сообщение
да, вот так уже понятнее

Основное применение может быть следующим:
предположим, надо запустить 20 раз, последовательно увеличивая ( например на 10 ) какой-нить
параметр. Будешь 20 раз править конфиг ?

сделать так:

PowerShell
1
2
3
$mm = 3
1..20 |
        exec-amod  set1.json "HDR_med.hevc" "HDR.avs" { param($o)  $o."max-merge" = ( $global:mm += 10 ) }
0
14 / 14 / 5
Регистрация: 13.07.2013
Сообщений: 230
02.06.2022, 19:20  [ТС]
Цитата Сообщение от volodin661 Посмотреть сообщение
Основное применение может быть следующим:
предположим, надо запустить 20 раз, последовательно увеличивая ( например на 10 ) какой-нить
параметр. Будешь 20 раз править конфиг ?
понял, но параметры как правило всегда одинаковые
такое не используется

обычно задача чуть другая, запустить кодирование для сезона, где меняется нумерация серий
обычно я это делаю через CMD и цикл FOR

правильно ли я понимаю что в PS цикл будет выглядить так?
серии с 1 по 16

как правильно вставить пременную в текстковую строку?
CMD к слову за 1 цикл не может пройтись по всем цифрам 1-16
если запись идет с форматированием
01
02
03
..
10

может хоть PS так может? )))

нашел ваше же сообщение на форме

PowerShell
1
"$i".PadLeft($j,'0');
PowerShell
1
2
3
4
5
for ($i=1; $z -le 16; $z++)
{
    "$i".PadLeft($j,'0');
    ./exec-amod set1.json "D:\out.S01E$i.hevc" "D:\in.S01E$i.avs"
}
Добавлено через 6 минут
PowerShell
1
2
3
4
5
for ($i=1; $z -le 16; $z++)
{
    "$i".PadLeft(2,'0');
    ./exec-amod set1.json "D:\out.S01E$i.hevc" "D:\in.S01E$i.avs"
}
но я точно уверен что не так )))
0
 Аватар для volodin661
6796 / 2293 / 348
Регистрация: 10.12.2013
Сообщений: 7,920
02.06.2022, 19:56
PowerShell
1
1..10 | "id = $_ "
0
14 / 14 / 5
Регистрация: 13.07.2013
Сообщений: 230
02.06.2022, 21:37  [ТС]
Цитата Сообщение от volodin661 Посмотреть сообщение
1..10 | "id = $_ "
нифига не понял как это чудо юдо работает...
темболее $_ не добавляет ноль в начале

сделал вот так
PowerShell
1
2
3
4
5
for($i=1;$i -le 11;$i++)
{
    $ep = "$i".padleft(2,'0')
    Write-Host "D:\TEST\IN.S01E${ep}.avs"
}
PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
PS C:\amod> for($i=1;$i -le 11;$i++)
>> {
>> $ep = "$i".padleft(2,'0')
>>    Write-Host "D:\TEST\IN.S01E${ep}.avs"
>> }
D:\TEST\IN.S01E01.avs
D:\TEST\IN.S01E02.avs
D:\TEST\IN.S01E03.avs
D:\TEST\IN.S01E04.avs
D:\TEST\IN.S01E05.avs
D:\TEST\IN.S01E06.avs
D:\TEST\IN.S01E07.avs
D:\TEST\IN.S01E08.avs
D:\TEST\IN.S01E09.avs
D:\TEST\IN.S01E10.avs
D:\TEST\IN.S01E11.avs
PS C:\amod>
грубо говоря впесто вывода запускать уже кодирование, прям то что нужно, и не надо как в CMD 2 цикла делать )
0
2805 / 503 / 120
Регистрация: 26.09.2020
Сообщений: 950
Записей в блоге: 5
02.06.2022, 22:44
Вас же прекрасному учат
PowerShell
1
1..11 | ForEach-Object -Process { "IN.S01E{0:00}" -f $PSItem }
или вкратце
PowerShell
1
1..11 | % { "IN.S01E{0:00}" -f $_ }
{0:00} — в первый ноль подстановка $PSItem, а нули, после двоеточия : 00 — число знаков, пример
PowerShell
1
101..111 | % { "IN.s01e{0:0000}" -f $_ }
0
14 / 14 / 5
Регистрация: 13.07.2013
Сообщений: 230
03.06.2022, 07:19  [ТС]
Цитата Сообщение от iNNOKENTIY21 Посмотреть сообщение
Вас же прекрасному учат
я погуглил, но ...
нашел старый, добрый, а значит и более понятный цикл for ))))
0
14 / 14 / 5
Регистрация: 13.07.2013
Сообщений: 230
05.06.2022, 13:09  [ТС]
чет все пропали )))
как я понял запись в файл уже есть в exec-amod.ps1
но лог почему то пустой, возможно это связано именно с aMod (

Добавлено через 1 час 19 минут
Цитата Сообщение от iNNOKENTIY21 Посмотреть сообщение
Вас же прекрасному учат
прекрасное то конечноо прекрасно может быть ))
но например я вот не смог подружить даже свой цикл for с командной для CMD

например у меня есть код для СМД (который выдает программа, каждый раз он разный), в сда я запуская цикла 1-9 10-хх
так как цмд не может форматировать числа

ПШ может, но... как это заставить работать )))

PowerShell
1
2
3
4
5
6
for($i=1;$i -le 10;$i++)
{
    $ep = "$i".padleft(2,'0')
    cmd /c ""C:\Program Files\MKVToolNix\mkvmerge.exe" --ui-language ru --priority lower --output ^"D:\HDR TEST\10bit HDR_med.S01E${ep}.mkv^" --language 0:und --display-dimensions 0:3840x1600 ^"^(^" ^"D:\HDR TEST\avengers\10bit HDR_med.mkv^" ^"^)^""
 
}
как я понял просто скопировать код для смд и запустить его еще и подставляя переменную не выйдет
0
 Аватар для volodin661
6796 / 2293 / 348
Регистрация: 10.12.2013
Сообщений: 7,920
05.06.2022, 14:38
Цитата Сообщение от pozitiv_rus Посмотреть сообщение
возможно это связано именно с aMod
скорее всего, amod не в StandardOut всё льёт, а в StandardError.

Сможешь сам поправить ?

Добавлено через 4 минуты
строкaх #32 и #33 поменять местами $true и $false
И Заменить всюду StandardOutput на StandardError
( это строки #48 и #51 )
0
14 / 14 / 5
Регистрация: 13.07.2013
Сообщений: 230
05.06.2022, 15:49  [ТС]
volodin661,
заменил, запустил, кодирование прошло, файл видео создался, ло файла не появилось
0
 Аватар для volodin661
6796 / 2293 / 348
Регистрация: 10.12.2013
Сообщений: 7,920
05.06.2022, 16:07
Был вывод в консоль ?
0
14 / 14 / 5
Регистрация: 13.07.2013
Сообщений: 230
05.06.2022, 17:03  [ТС]
volodin661,
нет, кодирование запускается, создается процесс аМод, но почему то он виснит и перестает кодировать например
если процесс завершить, то в ПШ появляется вывод, в лог файле тоже воявляется вывод, как раз до места до куда дошло и не зависло

проще наверное кодировать в СМД с выводом в файл, но без вывода инфы в окне)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.06.2022, 17:03
Помогаю со студенческими работами здесь

программы для работы с множеством
у меня есть код и я не знаю как реализовать функцию вывода на экран множественного числа, помогите пожалуйста #include <iostream> ...

Запись результатов работы программы в файл
как сделать чтобы результат записывался в файл? Program writefile; var x,y:real; st:string; f:text; begin assign(f,'xxx.txt'); ...

Запись результата работы программы в файл
Здравствуйте, необходимо записать результат работы программы в файл, но в зависимости от опции, файл должен перезаписываться, не совсем...

Работа с путями, проверка наличия файла, подсчет слов и запись в файл
Всем привет,есть такое задание,помогите выполнить на языке bash Разработать скрипт, который:  выводит имя текущего каталога; ...

Запись в текстовый лог-файл по сети
Есть скрипт Sub Remote(srv) On Error Resume Next Dim Controller, RemoteScript Set Controller =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru