2013-01-20 3 views
1

이것은 약간 혼란스러워서 설명하려고 노력할 것입니다. (btw, 저는 7 PC를 사용하고 있습니다).폴더에서 임의의 비디오 파일을 재생하고 다음 폴더로 이동하고 일괄 처리 스크립트로 동일한 작업을 수행하는 방법은 무엇입니까?

나는 사랑하는 쇼를 보면서 자랐고, 수년 동안 많은 하드 드라이브를 내 외장 하드 드라이브에 다운로드했습니다. Windows Media Player를 통해 각 프로그램에 대해 임의의 에피소드를 재생하는 방법을 찾고 있었지만 아무것도 찾을 수 없었습니다.

몇 달 전, 누군가 내가 원하는 것을 거의 수행하는 배치 스크립트를 작성하는 데 도움이되었지만 내 쇼에 임의의 에피소드를 재생하지 않는 것 같습니다. 예를 들어

,의 내가 X는 드라이브에 표시가 있다고 가정하자 (심슨 가족, 평론가, BillNye, 가필드, 배트맨 등을 예를 들어 ..) 그 쇼의 각에서

이 들어 에피소드의 X 금액 (프로그래머 심슨은 85 에피소드, 비평 24 에피소드, 빌니 100 에피소드, 가필드 64 에피소드 등을 가지고 있습니다.)

스크립트가 심슨 가족 폴더를 조사한 다음 1 개의 임의 에피소드를 선택한 다음 이동합니다. Critic 폴더에 1 개의 임의의 에피소드를 선택하고 BillNye 폴더로 이동합니다.

내 쇼가 끝나면 재생 목록 파일이 출력됩니다. 그래서 내가해야 할 일은 시청할 각 에피소드를 수동으로 선택하는 데 오랜 시간을 소비하는 대신 Windows Media Player에 재생 목록을로드하는 것입니다.

글쎄, 몇 달 전에 누군가 나를 위해 이걸 썼지 만 테스트를 거친 후에는 마지막 재생 목록에서 같은 에피소드 중 일부를 반복하는 것처럼 보이기 때문에 진정으로 무작위로 보이지 않습니다. (어떤 폴더는 100 개가 넘는 프로그램을 가지고있어서 왜 무작위가 되려고한다면 동일한 에피소드를 재생할 수 없는지 이해할 수 없습니다.)

나는 그 사람에게 연락하려했으나 아무도 연락이없는 경우 저를 거기에 도움을 줄 수 ...^_ 여기

이 스크립트입니다^:이 스크립트에서

SET extensionList=avi mp4 mkv 
SET cnt=0 
:Loop 
    SET /A cnt+=1 
IF EXIST %cnt%.m3u GOTO Loop 
>%cnt%.m3u ECHO.#EXTM3U 
FOR /D %%a IN (c:\testing\*) DO CALL :PickFile "%%a" 
GOTO :EOF 

:PickFile 
SET searchList= 
FOR %%b IN (%extensionList%) DO CALL SET searchList=%%searchList%% "%~1\*.%%b" 
FOR /F %%b IN ('2^>NUL DIR /A-D-H-S %searchList% ^| FIND "File(s)"') DO SET limit=%%b 
SET /A fileNum=(%random% %% limit) + 1 
FOR /F "tokens=2 delims=:" %%b IN ('2^>NUL DIR /A-D-H-S/B %searchList% ^| FINDSTR /N ".*" ^| FINDSTR "^%fileNum%:"') DO^
CALL :AddList %1 "%%b" >>%cnt%.m3u 
GOTO :EOF 

:AddList 
@ECHO.#EXTINF:-1,%~n2 
@ECHO.%~f1\%~2 
@GOTO :EOF 

, 내가하고자 번 각각의 X 금액에 대한 시간의 *을 .m3u 파일 X 양을 출력 딸깍 하는 소리.

이 스크립트의 문제점은 일부 프로그램에서 특정 에피소드를 반복하는 것으로 보이며이 프로그램을 조금만 수정할 수 있으면 궁극적으로 무작위 적이거나 마지막 에피소드가 없을 수 있는지 궁금합니다. 다음 재생 목록에서 다시 반복되지 않습니까?

나는 누군가를 혼동하지 않기를 희망하며, 프로그래밍에 대해 많이 모른다. 나는 고등학교 때 C++을 배우려고 노력했지만 몇 년 전에는 힘들었습니다. 나는 다만 기초를 알고있다 그러나 누군가가 저를 도울 수있는 경우에 ~ 나는 너의 빚에서 영원히있을 것이다. 사람이 어떤 질문이 있으면

나는^_^

답변

0

나는 어떤 시험이 여기에 필요한 :)

이것은 임의의를 얻는 대안이라고 생각 다시 ~ 최대한 빨리 감사를 응답하는 행복 그 이상을 선사 할 것입니다 숫자

%random% * 10/32768 + 1 

몇 차례 실행 한 결과, 실행중인 버전보다 약간 나은 평균 결과를 얻었습니다.

태미 스크립트

setlocal enabledelayedexpansion 
for /l %%a in (1,1,1000) do (
call :RAND 
echo !num! >>tammy.txt 
) 

:RAND 
set /a num=(%random% %% 10) + 1 

발리 스크립트

setlocal enabledelayedexpansion 
for /l %%a in (1,1,1000) do (
SET /A num=!random! * 10/32768 + 1 
echo !num! >>bali.txt 
) 
다음

, 수를 계산 나는 각 버전이 1000 배를했다 테스트하려면 배의 각 숫자

for /l %%a in (1,1,10) do (
find /c "%%a" tammy.txt 
) >>tammycount.txt 

for /l %%b in (1,1,10) do (
find /c "%%b" bali.txt 
) >>balicount.txt 

나서 결과

tammycount.txt

---------- R2.TXT: 203 

---------- R2.TXT: 103 

---------- R2.TXT: 82 

---------- R2.TXT: 101 

---------- R2.TXT: 95 

---------- R2.TXT: 87 

---------- R2.TXT: 107 

---------- R2.TXT: 118 

---------- R2.TXT: 104 

---------- R2.TXT: 99 

balicount.txt

비교 (이 경우에 1-10) 표시
---------- R.TXT: 201 

---------- R.TXT: 90 

---------- R.TXT: 91 

---------- R.TXT: 101 

---------- R.TXT: 108 

---------- R.TXT: 97 

---------- R.TXT: 101 

---------- R.TXT: 105 

---------- R.TXT: 106 

---------- R.TXT: 106 

당신이 볼 수 있듯이, balicount은 평균 수치가 약간 더 많음을 보여 주므로 (내 생각대로) 내 버전을 시험해보고 더 나은지 알아볼 가치가 있습니다.

분명히 실제 결과를 얻으려면이 작업을 여러 번 수행해야하지만 시간이 있다면 가치가있을 수 있습니다.