it-swarm-ja.com

フォルダ内のランダムなファイルを開き、指定されたファイル名拡張子を持つファイルのみを開くように設定するにはどうすればよいですか?

フォルダ内のランダムなファイルを開き、指定されたファイル名拡張子を持つファイルのみを開くように設定するにはどうすればよいですか? (できれば、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ファイル名もサポートしていません。 Unicodeファイル名のファイルをランダムに開くと、Windowsはこのエラーメッセージを出力します。

Windowsが(Unicodeファイル名のファイル名。Unicode文字が疑問符に置き換えられています)が見つかりません。名前を正しく入力したことを確認して、再試行してください。

目的:

  • フォルダからランダムなビデオを見たいが、フォルダにはビデオ以外のファイルも含まれている場合
  • フォルダからランダムな画像を表示したいが、フォルダには画像以外のファイルも含まれている場合。
  • 等。

.BATファイルコード(特に、同じファイルを2〜3回連続して取得することが多いため、「ランダム性」)または別のより良い解決策(非バッチスクリプトでも)を改善するための提案を歓迎します。私はWindows7を使用しています。

2
galacticninja

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"))
_
0
poplitea