Цель
У меня относительно обширная коллекция мультимедиа, хранящаяся локально на моем компьютере в двух родительских папках ("Фильмы" и "Шоу"). Моя цель - иметь возможность воспроизвести в произвольном порядке любой из фильмов или эпизодов, которые у меня есть в этих папках, щелкнув правой кнопкой мыши родительскую папку и выбрав пункт «Воспроизвести случайный фильм / эпизод» из расширенного контекстного меню.
Пакетный скрипт
У меня есть следующий пакетный скрипт, хранящийся в папке на моем компьютере с Windows 7, который я взял отсюда и адаптировал для поиска файлов .mp4
, .mkv
и .avi
(все расширения, из которых состоит моя медиаколлекция):
@echo off
setlocal
:: Create numbered list of files in a temporary file
set "tempFile=%temp%\%~nx0_fileList_%time::=.%.txt"
dir *.mp4,*.mkv,*.avi /b /s /a-d %1 | findstr /n "^" >"%tempFile%" & REM "
:: Count the files
for /f %%N in ('type "%tempFile%" ^| find /c /v ""') do set cnt=%%N
call :openRandomFile
:: Delete the temp file
del "%tempFile%"
exit /b
:openRandomFile
set /a "randomNum=(%random% %% cnt) + 1"
for /f "tokens=1* delims=:" %%A in (
'findstr "^%randomNum%:" "%tempFile%"'
) do start "" "%%B"
exit /b
Элемент контекстного меню
Чтобы добавить элемент расширенного контекстного меню для запуска вышеуказанного пакетного файла, я создал следующие разделы реестра, в результате чего появится элемент контекстного меню для папок, в котором запускается пакетный файл по пути, указанному при нажатии.
[HKEY_CLASSES_ROOT\Directory\shell\Play random movie/episode]
"Extended"=""
"Position"="Top"
[HKEY_CLASSES_ROOT\Directory\shell\Play random movie/episode\command]
@="\"B:\\Users\\Hashim\\Resources\\Windows Modding\\Play Random.bat\" \"%1\""
Где я застрял
Ключ реестра, кажется, работает достаточно хорошо - этот пункт отображается в расширенном контекстном меню для папок:
... и при нажатии запускается командный файл. Проблемы заключаются в выполнении сценария.
Вместо того чтобы выбирать только форматы файлов
.mkv
,.mp4
и.avi
, скрипт выбирает все типы файлов.Вместо поиска, перечисления и выбора из файлов в целевой папке - папке, в которой сценарий выбран для запуска из контекстного меню, вызываемого правой кнопкой мыши, - вместо этого он запускается в том, что кажется родительской папкой целевой папки и всех подпапок. , Поскольку целевая папка в этом случае находится в каталоге пользовательских папок, это по сути означает, что она случайным образом выбирает файлы со всего пользовательского диска.
Эти проблемы сохраняются, несмотря на то, что сценарий использует dir *.mp4,*.mkv,*.avi /b /s /a-d %1
для перечисления файлов, где %1
- параметр для целевой папки.