เป้าหมาย
ฉันมีคอลเลกชันสื่อที่ค่อนข้างกว้างจัดเก็บไว้ในเครื่องของฉันภายในสองโฟลเดอร์หลัก ("ภาพยนตร์" และ "รายการ") เป้าหมายของฉันคือสามารถเล่นสุ่มภาพยนตร์หรือตอนใดก็ได้ที่ฉันมีในโฟลเดอร์เหล่านี้โดยคลิกขวาที่โฟลเดอร์หลักและเลือกรายการ "เล่นภาพยนตร์ / ตอนสุ่ม" จากเมนูบริบทแบบขยาย
สคริปต์ชุด
ฉันมีสคริปต์ชุดต่อไปเก็บไว้ในโฟลเดอร์บน Windows 7 เครื่องของเราซึ่งเราเอามาจากที่นี่และปรับตัวที่จะมองหา.mp4
, .mkv
และ.avi
ไฟล์ (ส่วนขยายทั้งหมดของคอลเลกชันที่สื่อของฉันประกอบด้วย):
@echo off
setlocal
:: Create numbered list of files in a temporary file
set "tempFile=%temp%\%~nx0_fileList_%time::=.%.txt"
dir *.mp4,*.mkv,*.avi /b /s /a-d %1 | findstr /n "^" >"%tempFile%" & REM "
:: Count the files
for /f %%N in ('type "%tempFile%" ^| find /c /v ""') do set cnt=%%N
call :openRandomFile
:: Delete the temp file
del "%tempFile%"
exit /b
:openRandomFile
set /a "randomNum=(%random% %% cnt) + 1"
for /f "tokens=1* delims=:" %%A in (
'findstr "^%randomNum%:" "%tempFile%"'
) do start "" "%%B"
exit /b
รายการเมนูบริบท
ในการเพิ่มรายการเมนูบริบทแบบขยายเพื่อเรียกใช้ไฟล์แบตช์ด้านบนฉันสร้างรีจิสตรีคีย์ต่อไปนี้ซึ่งส่งผลให้รายการเมนูบริบทในโฟลเดอร์ที่เรียกใช้ไฟล์แบตช์ที่เส้นทางที่ระบุเมื่อคลิก
[HKEY_CLASSES_ROOT\Directory\shell\Play random movie/episode]
"Extended"=""
"Position"="Top"
[HKEY_CLASSES_ROOT\Directory\shell\Play random movie/episode\command]
@="\"B:\\Users\\Hashim\\Resources\\Windows Modding\\Play Random.bat\" \"%1\""
ฉันอยู่ที่ไหน
ดูเหมือนว่ารีจิสตรีคีย์จะทำงานได้ดีพอ - ไอเท็มจะแสดงในเมนูบริบทแบบขยายสำหรับโฟลเดอร์:
... และเมื่อคลิกมันจะเรียกใช้ไฟล์แบตช์ ปัญหาอยู่ที่การทำงานของสคริปต์
แทนที่จะเลือกเพียง
.mkv
,.mp4
และ.avi
รูปแบบไฟล์สคริปต์เลือกไฟล์ทุกประเภทแทนที่จะค้นหาแสดงรายการและเลือกจากไฟล์ภายในโฟลเดอร์เป้าหมาย - โฟลเดอร์ที่สคริปต์ถูกเลือกให้ทำงานจากเมนูบริบทคลิกขวา - แต่จะทำงานในสิ่งที่ดูเหมือนจะเป็นโฟลเดอร์หลักของโฟลเดอร์เป้าหมายและโฟลเดอร์ย่อยทั้งหมด . เนื่องจากโฟลเดอร์เป้าหมายในกรณีนี้อยู่ภายใต้ไดเรกทอรีโฟลเดอร์ผู้ใช้สิ่งนี้หมายความว่ามันสุ่มเลือกไฟล์จากไดรฟ์ผู้ใช้ทั้งหมด
ปัญหาเหล่านี้ยังคงมีอยู่แม้ว่าข้อเท็จจริงที่ว่าสคริปต์จะใช้dir *.mp4,*.mkv,*.avi /b /s /a-d %1
ในการระบุไฟล์โดยที่%1
พารามิเตอร์สำหรับโฟลเดอร์เป้าหมาย
ทำไมสคริปต์ไม่ทำงานอย่างที่คาดไว้ ฉันพลาดอะไรไปที่นี่
https
ร็อบแวนไม่ได้ทำงานเป็นเว็บไซต์ที่ไม่ได้ใช้
@echo off
และดูว่าแฟ้มชุดงานของคุณกำลังทำอะไรอยู่