সমস্ত এমকেভি ফাইল অনুসন্ধান করুন এবং সমস্ত সাবটাইটেল সরান


5

আমি বর্তমানে একটি উইন্ডোজ প্রোগ্রাম খুঁজছি যা এমকেভ্রিম বলে । আমি একটি নির্দিষ্ট পাথ থেকে সমস্ত এমকেভি ফাইলগুলি পুনরাবৃত্তভাবে সন্ধানের জন্য একটি ব্যাচ ফাইল তৈরি করতে চাই এবং পাওয়া এমকেভি ফাইলগুলি থেকে সমস্ত সাবটাইটেলগুলি সরিয়ে ফেলতে চাই (যদি এম কেভিতে পাওয়া যায় সাবটাইটেল রয়েছে), অবশেষে সমস্ত মূল এমকেভি ফাইল মুছে ফেলা হয়েছে যাতে সাবটাইটেলগুলি মুছে ফেলা হয়েছিল।

আমি প্রায় ২ ঘন্টা গুগল করেছি এবং আমি খুঁজেছি যে আপনি এই জাতীয় জিনিস লিখতে সক্ষম হতে হবে:

FOR /F "delims=*" %%A IN ('dir /b *.MKV') DO "C:\mkvmerge.exe" -o "fixed_%%A" -a 4 -s 7 --compression -1:none "%%A"

আমি এখনও চেষ্টা করছি, তবে কেউ যদি আমাকে কিছুটা সহায়তা দিতে পারে তবে আমি সত্যিই এটির প্রশংসা করব।


1
কোন অংশটি কাজ করছে না, আপনি কী ত্রুটিগুলি পেয়েছেন? আপনি কি প্রথমভাগের জন্য ... অংশটি পরীক্ষা করেছেন, কেবল %% A প্রতিধ্বনিত করছেন? তারপরে আপনি কি প্রথম পরীক্ষার বাইরে আসা কোনও একটির জন্য একটি একক ডিও চেষ্টা করেছিলেন?
জান ডগজেন

ইন্টারনেট থেকে এটি একটি উদাহরণ ছিল। আমি জানি আমি কি করছি জানি। আমি কেনা সমস্ত আইনী ভিডিওর জন্য আমার স্বয়ংক্রিয় মিডিয়া কেন্দ্র স্থাপনের এটি শেষ অংশ। আমি এখন নিজেকে এই কোড স্টাফ শেখানোর চেষ্টা করছি, তাই আমি এই ব্যাচের ফাইলটি লিখতে পারি।
ডেভিড কাস্টার

1
তারপরে নিজেকে "ব্যাচ প্রোগ্রামিং" বা "ব্যাচ ফাইল প্রোগ্রামিং" শিখুন (এটি আপনার অনুসন্ধানের পদ, সম্ভবত "টিউটোরিয়াল" এর সাথে মিলিয়ে) এবং আপনার প্রচেষ্টাটিকে আমি প্রস্তাবিত দুটি পদক্ষেপে বিভক্ত করুন।
জান ডোগজেন

আমি এই কাজটি এমকেভ্রমজ -ও ./newfiles/ basename "$i" mkv.mkv - কোন-সাবটাইটেলগুলি "$ i" পেয়েছি ; সম্পন্ন .... তবে এটি সঠিকভাবে কাজ করছে বলে মনে হচ্ছে না।
ডেভিড কাস্টার

1
@DavidCuster যে একটি অসম্পূর্ণ লাইন ব্যাশ প্রাথমিকভাবে Linux এবং ওএসএক্স ব্যবহৃত একটি স্ক্রিপ্টিং ভাষা -। এটি উইন্ডোজে কাজ করা সম্ভব, তবে সম্ভবত এটির চেয়ে বেশি প্রচেষ্টা effort সন্ধান করুন Windows batch scriptবা Windows batch for loop। আশা করি কেউ উত্তর হিসাবে একটি ভাল ব্যাখ্যা পোস্ট করবে - আমি এটি নিজেই করব, তবে আমার ব্যাচের স্ক্রিপ্টিংটি খুব নড়বড়ে হওয়ায় আমাকে একটি রেফারেন্স সন্ধান করতে হবে।
অশুভচাপ

উত্তর:


8

একই ডিরেক্টরিতে এমকেভিভার্স.এক্স.ই.তে ডেলএমকেভিসউবস.ব্যাট জাতীয় কিছু হিসাবে নিম্নলিখিতটি সংরক্ষণ করুন , আপনার প্রয়োজনীয়তা অনুসারে রুটফোল্ডার ভেরিয়েবল সম্পাদনা করুন এবং ব্যাচ ফাইলটি চালান:

@echo off
cls
set rootfolder=C:\
echo Enumerating all MKVs under %rootfolder%
echo.
for /r %rootfolder% %%a in (*.mkv) do (
    for /f %%b in ('mkvmerge -i "%%a" ^| find /c /i "subtitles"') do (
        if [%%b]==[0] (
            echo "%%a" has no subtitles
        ) else (
            echo.
            echo "%%a" has subtitles
            mkvmerge -q -o "%%~dpna (No Subs)%%~xa" -S "%%a"
            if errorlevel 1 (
                echo Warnings/errors generated during remuxing, original file not deleted
            ) else (
                del /f "%%a"
                echo Successfully remuxed to "%%~dpna (No Subs)%%~xa", original file deleted
            )
            echo.
        )
    )
)

ব্যাচের ফাইলটি বোঝার পক্ষে যথেষ্ট সহজ হওয়া উচিত, তবে তবুও এখানে একটি ওভারভিউ রয়েছে:

  1. এটি সমস্ত এমকেভিগুলির জন্য for /rপুনরাবৃত্তভাবে অনুসন্ধান করতে ব্যবহার করে%rootfolder%

  2. এরপরে mkvmerge -iসাবটাইটেল ট্র্যাক রয়েছে কিনা তা যাচাই করতে এটি প্রতিটি এমকেভিতে চলে

  3. যদি mkvmerge -Sএমকেভিতে সাবটাইটেল ট্র্যাক থাকে, তবে এই জাতীয় ট্র্যাকগুলি এড়িয়ে যাওয়ার সময় ফাইলটি পুনরায় লাগাতে চলে

  4. অবশেষে এটি এমকেভ্র্যামের প্রস্থান কোডটি পরীক্ষা করে এবং যদি এটি (যেমন errorlevel) 0 কোনও সতর্কতা / ত্রুটিযুক্ত সাফল্যের ইঙ্গিত দেয় তবে এটি আসল ফাইলটি মুছে দেয়

আরো দেখুন জন্য mkvmerge ডকুমেন্টেশন এবং for /?, if /?কমান্ড প্রম্পটে ইত্যাদি।


এইটা কাজ করে! আমি আমার পরিবেশ পরিবর্তনশীল পথে এমকেভিটুলনিক্স রেখেছি। আমি তোমাকে যথেষ্ট ধন্যবাদ দিতে পারব না। আপনি এখন যা করেছেন তা আমি নিজের জন্য শেখার চেষ্টা করছি, আপনি নিজে যা করেছেন তা আমি করতে সক্ষম হতে চাই। এটা বেশ আশ্চর্যজনক! ধন্যবাদ! ধন্যবাদ! ধন্যবাদ! ;) আমার একটি প্রশ্ন ছিলো. আপনি যখন এম কেভিভার্স -i চালান এটির ইংলিশ উপশিরোনাম থাকে, তবে কি এটি পুনর্নির্মাণের আগে সেই ডিরেক্টরিতে এগুলি নিষ্কাশনের জন্য বলা সম্ভব? আমি বর্তমানে এটি খতিয়ে দেখছি এবং নিজেকে এটি বের করার চেষ্টা করছি। আমি কেবল ভেবেছিলাম আমি আপনাকে জিজ্ঞাসা করতে পারি ..
ডেভিড কাস্টার

আপনি স্বাগত জানাই, এবং উত্তর যদি আপনাকে সহায়তা করে তবে তা গ্রহণ করতে ভুলবেন না! আপনি যদি কোনও এমকেভি থেকে ট্র্যাকগুলি বের করতে চান (সাবটাইটেল), যথাযথভাবে নামকরণ করা এমকেভেক্সট্র্যাক্টের জন্য ডকুমেন্টেশনটি একবার দেখুন ।
করণ

উফ। আমি জানতাম না যে আমি এটি করতে পারি। এটি বের করার জন্য আমাকে এক মিনিট সময় নিয়েছে। অনেক অনেক ধন্যবাদ!
ডেভিড কাস্টার

আপনার যদি ব্যাচের কমান্ডগুলির সাথে আরও সহায়তার প্রয়োজন হয় তবে আমি সর্বদা লোকদের এই সাইটে উল্লেখ করি ।
করণ

ধন্যবাদ! আমি এটি পড়ছি। আমি mkvextract ব্যবহার করে আপনার সম্পাদনা করব। আমি শেষ হয়ে গেলে এটি পোস্ট করব। আমি আজ আপনার মত দ্রুত নই lol হতে পারে।
ডেভিড কাস্টার

0

ধন্যবাদ, করণ, এটি আমার পক্ষেও খুব কার্যকর ছিল। আমি আপনার স্ক্রিপ্টটি পরিবর্তন করেছি যাতে আপনি এখন যে ভাষা রাখতে চান তার সাবটাইটেলগুলির জন্য একটি ভাষা (3LC (eng, ned, swe ইত্যাদি) দ্বারা নির্ধারিত) চয়ন করতে পারেন। এছাড়াও, আমি যে অংশটি ইনপুট ফাইলগুলি মুছতে হবে তা সরিয়ে দিয়েছি এবং আউটপুট ফাইলে একটি প্রত্যয় যুক্ত করতে বেছে নিয়েছি।

আমার সংস্করণটি এখানে:

:: remux all mkvs under a certain subfolder with all subitles
:: but those as specified by %language% parameter removed.

@echo off
setlocal enabledelayedexpansion

:: set your variables here
set rootfolder="C:\temp\New folder"
set language=eng
set suffix= (eng sub)

:: do the remuxing
echo Remuxing all mkvs in %rootfolder% and its subfolders.
for /r %rootfolder% %%a in (*.mkv) do (
    set subs=
    set mkv=%%a
    for /f "tokens=3 delims=: " %%b in ('mkvmerge -I "%%a" ^| findstr /i /r ".*subtitles.*language:%language%.*"') do (
        set subs=!subs!,%%b
    )
    for /f "tokens=*delims=," %%c in ("!subs!") do (
        set subs=%%c
    )
    if not exist "%%~dpna%suffix%%%~xa" if not "!subs!"=="" (
        mkvmerge -q -o "%%~dpna%suffix%%%~xa" -s !subs! "%%a"
        if errorlevel 1 (
            echo Warnings/errors generated during remuxing of "%%a".
        ) else (
            echo Successfully remuxed to "%%~dpna (eng subs)%%~xa".
        )
    ) else (
        echo Input file "%%a" has no subtitles in %language% or output file "%%~dpna%suffix%%%~xa" already exists. Skipping this file.
    )
)
pause
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.