Состояние гонки в PowerShell - PullRequest
0 голосов
/ 08 октября 2018

Мне нужно воспроизвести все видео в плейлисте, поэтому я пришел с этим кодом.

Foreach ($line in get-content playlist) 
{ $line | invoke-item  }

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

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

Как это преодолеть, я попытался / path / to / player $ line |out-null, но игрок остановится и для продолжения потребуется вмешательство пользователя.

Ответы [ 2 ]

0 голосов
/ 08 октября 2018

Возможно, вам следует по-другому подойти к проблеме и использовать параметры для Media player classic.У меня не установлено здесь, но этот код должен дать вам общее представление:

  1. Убедитесь, что все ваши файлы находятся в одной папке
  2. Это будет воспроизводить все файлыв этой папке mpc-hc64.exe "c:\mpcfiles" /play

Дополнительная информация здесь .

0 голосов
/ 08 октября 2018

Я бы не назвал это состоянием гонки, но проблема в том, что Invoke-Item не ожидает завершения процесса.Попробуйте вместо этого использовать Start-Process -wait.

Обновление: поскольку после завершения фильма трудно заставить Windows Media Player завершить работу, вместо этого можно попробовать вызвать vlc:

Foreach ($line in get-content pl.txt)
{  Start-Process -wait "C:\...\VideoLAN\VLC\vlc.exe" -ArgumentList "$line vlc://quit" }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...