如何打开文件夹中的随机文件,并设置仅打开具有指定文件扩展名的文件?

如何打开文件夹中的随机文件,并设置仅打开具有指定文件扩展名的文件?

如何打开文件夹中的随机文件,并设置仅打开具有指定文件扩展名的文件?(最好也支持 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 文件。

相关内容