Как открыть случайный файл в папке и установить, что должны открываться только файлы с указанным расширением (ями) имени файла?
Как открыть случайный файл в папке и установить, что должны открываться только файлы с указанным расширением (ями) имени файла? (Хотя желательно, поддержка имен файлов Unicode тоже.)
Я уже посмотрел вокруг и нашел этот пакетный скрипт (.BAT):
@echo off & setlocal
:: start of main
rem Set your path here:
set "workDir=C:\DVDCOVERS"
rem Read the %random%, two times is'nt a mistake! Why? Ask Bill.
rem In fact at the first time %random% is nearly the same.
@set /a "rdm=%random%"
set /a "rdm=%random%"
rem Push to your path.
pushd "%workDir%"
rem Count all files in your path. (dir with /b shows only the filenames)
set /a "counter=0"
for /f "delims=" %%i in ('dir /b ^|find "."') do call :sub1
rem This function gives a value from 1 to upper bound of files
set /a "rdNum=(%rdm%*%counter%/32767)+1"
rem Start a random file
set /a "counter=0"
for /f "delims=" %%i in ('dir /b ^|find "."') do set "fileName=%%i" &call :sub2
rem Pop back from your path.
popd "%workDir%"
goto :eof
:: end of main
:: start of sub1
:sub1
rem For each found file set counter + 1.
set /a "counter+=1"
goto :eof
:: end of sub1
:: start of sub2
:sub2
rem 1st: count again,
rem 2nd: if counted number equals random number then start the file.
set /a "counter+=1"
if %counter%==%rdNum% (start "" "%fileName%")
goto :eof
:: end of sub2
:: -snap--- end of batch
Источник: http://forums.majorgeeks.com/showthread.php?t=181574
Он работает при открытии любого случайного файла в папке, но я бы хотел иметь возможность открывать только файлы с указанным расширением (ями) имени файла. (Например, папка содержит файлы.MKV (видео), .TP (видео), .MP4 (видео) и.JPG (изображение), и я хотел бы открывать в случайном порядке только видеофайлы, а не файлы изображений.JPG.)
Он также не поддерживает имена файлов Unicode. Windows выводит это сообщение об ошибке, если случайным образом открывает файл с именем файла Unicode:
Windows не может найти (имя файла с именем файла Unicode, символы Unicode заменены знаком вопроса). Убедитесь, что вы правильно ввели имя, и повторите попытку.
Цели:
- Если вы хотите посмотреть случайное видео из папки, но папка также содержит не видео файлы
- Если вы хотите просмотреть случайное изображение из папки, но папка также содержит файлы не изображения.
- И т.п.
Приветствуются предложения по улучшению кода файла.BAT (особенно "случайности", так как я часто получаю один и тот же файл два-три раза подряд) или другое лучшее решение (даже не пакетный скрипт). Я использую Windows 7.
2 ответа
В Python вы можете открыть случайный JPG-файл следующим образом:
import glob,random,os
files = glob.glob("*.jpg")
file = random.choice(files)
print "Opening file %s..." % file
cmd = "rundll32 url.dll,FileProtocolHandler \"" + file + "\""
os.system(cmd)
Чтобы открыть видео-файлы, такие как.MKV, .MP4 и.TP, замените строку files = glob.glob("*.jpg")
с этими строками:
files = glob.glob("*.mkv")
files.extend(glob.glob("*.mp4"))
files.extend(glob.glob("*.tp"))
Если кто-то хочет открыть определенные файлы (например, только видео) из каталога и всех его подкаталогов. Это можно использовать
import random,os
import regex as re
pattern = '.*\.mp4|.*\.mkv' #files with certain extension
matches = []
for path, subdirs, files in os.walk('.'): #'.' means current directory
for name in files:
if re.match(pattern, name):
matches.append(os.path.join(path,name))
file = random.choice(matches)
cmd = "rundll32 url.dll,FileProtocolHandler \"" + file + "\""
os.system(cmd)
Последние строчки взяты из ответа poplitea
Чтобы запустить это, сохраните приведенный выше код где-нибудь как
random_vid.py
в каталоге
'.../folder1'
перейдите в папку, из которой вы хотите открыть файлы (из папки или подкаталогов) и запустите
python .../folder1/random_vid.py
или сохраните указанную выше строку в текстовом файле и сохраните ее как
random_vid.bat
. поместите bat-файл в нужную папку и дважды щелкните по нему.
Это дополнение к ответу poplitea.
Чтобы использовать скрипт Python в ответе poplitea, я сохранил скрипт Python по адресу C:\Programs\Scripts\
с именем файла, open-random-video.py
(Python скрипт, который открывает случайные видео).
Затем я сохранил следующий скрипт в виде командного файла (.BAT):
C:\Python27\python.exe "C:\Programs\Scripts\open-random-video.py" cd
Обратите внимание, что: C:\Python27\
где установлен Python. Этот каталог может меняться в зависимости от того, где вы установили Python. cd
означает текущий каталог.
Затем я помещаю файл.BAT в папки, в которых я хочу открыть случайные файлы, и просто запускаю файл.BAT, если я хочу, чтобы в этой папке был открыт случайный файл.