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

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

30.05.2022, 17:41. Показов 5160. Ответов 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
7094 / 2325 / 353
Регистрация: 10.12.2013
Сообщений: 8,020
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
7094 / 2325 / 353
Регистрация: 10.12.2013
Сообщений: 8,020
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
7094 / 2325 / 353
Регистрация: 10.12.2013
Сообщений: 8,020
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
7094 / 2325 / 353
Регистрация: 10.12.2013
Сообщений: 8,020
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
7094 / 2325 / 353
Регистрация: 10.12.2013
Сообщений: 8,020
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
7094 / 2325 / 353
Регистрация: 10.12.2013
Сообщений: 8,020
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
2806 / 504 / 121
Регистрация: 26.09.2020
Сообщений: 952
Записей в блоге: 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
7094 / 2325 / 353
Регистрация: 10.12.2013
Сообщений: 8,020
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
7094 / 2325 / 353
Регистрация: 10.12.2013
Сообщений: 8,020
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 16.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "ПутевойЛист" разработанного в КА2. Задача: запретить помечать на удаление и отменять проведения путевого листа при условии, если он сдан. . .
Как надо было делать правильно - вообще не слушать ИИ, его дело - текст.
Hrethgir 15.07.2026
А вообще надо было делать не так, чтобы не исправлять ошибку https:/ / www. cyberforum. ru/ blogs/ 223907/ 10996. html , правильно было : удалил кнопку, а потом добавил её. Всё это стресс конечно. Почему?. . .
Знаете, от чего появляется стресс?
kumehtar 15.07.2026
Стресс появляется оттого, что вы, зная как поступить правильно, делаете наоборот. Ларри Уингет
Нас бьют, а мы крепчаем? Какая чушь!
kumehtar 15.07.2026
Вот это вот бытующее мнение, что человек меняется только под действием проблем, всегда считал вредоносным. Поверь, от проблем у людей появляются не изменения, а нервное расстройство и ПТСР. А. . .
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru