0

私はビデオを再生するためにメディアプレーヤークラシックを使用しています。次のように、プレイリストを再生するためのバッチファイルを作成できます。

mpc.exe video1.avi video2.avi video3.avi ...

できます。

次に、ランダムにソートされたフォルダ内のすべてのビデオを再生するバッチファイルを作成したいと思います。

何か案が?

ありがとう

4

2 に答える 2

0

以下のコードは、現在のディレクトリからファイルを再生していることを前提としており、.aviファイル名が.で始まっていないことを前提としています=。これらの制限を取り除くのにそれほど時間はかかりません。

フォルダ内のファイルが多すぎると、最終的にコマンドの長さが最大許容長の8191バイトを超えます。

@echo off
setlocal disableDelayedExpansion
for /f "delims==" %%A in ('set file. 2^>nul') do set "%%A="
for /f "tokens=1* delims=:" %%A in (
  'dir /b /a-d *.avi^|findstr /n "^"'
) do (
  set "file.%%A=%%B"
  set "cnt=%%A"
)
set "cmd=mpc.exe"
for /l %%N in (%cnt% -1 1) do call :buildCmd %%N
%cmd%
exit /b

:buildCmd
set /a N=%random% %% %1
set "skip="
if %N% gtr 0 set "skip=skip=%N%"
for /f "%skip% tokens=1* delims==" %%A in ('set file.') do (
  set cmd=%cmd% "%%B"
  set "%%A="
  exit /b
)
于 2013-02-02T20:00:51.563 に答える
0

以下のバッチファイルは、ビデオファイルの名前に感嘆符が付いている場合は失敗します。これは、必要に応じて修正される場合があります。

@echo off
setlocal EnableDelayedExpansion

rem Store the file names into an array
set cnt=0
for %%a in (*.avi) do (
   set /A cnt+=1
   set file[!cnt!]=%%a
)

rem Insert the names in the command line in random order
set cmd=mpc.exe
for /L %%a in (%cnt%,-1,1) do (
   set /A i=%%a*!random!/32768+1
   for %%i in (!i!) do set cmd=!cmd! "!file[%%i]!"
   set file[%%i]=!file[%%a]!
)

%cmd%

アントニオ

于 2013-02-02T21:31:59.307 に答える