如何打开文件夹中的随机文件,并设置仅打开具有指定文件扩展名的文件?(最好也支持 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 字符用问号替换)。请确保您正确输入了名称,然后重试。
目的:
- 如果你想观看文件夹中的随机视频,但该文件夹还包含非视频文件
- 如果您想查看文件夹中的随机图像,但该文件夹也包含非图像文件。
- ETC。
欢迎提出改进 .BAT 文件代码的建议(尤其是“随机性”,因为我经常连续两三次得到同一个文件)或其他更好的解决方案(甚至是非批处理脚本)。我正在使用 Windows 7。
答案1
在 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"))
答案2
如果有人想打开目录中的某些文件(比如说只有视频)以及其下的所有子目录。这可以使用
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 文件放在您想要的文件夹中并双击它。
答案3
这是对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 文件。