बैच परिवर्तित वीडियो के लिए शेल स्क्रिप्ट


1

मैं HandbrakeCli के साथ उपयोग के लिए एक स्क्रिप्ट लिखने का प्रयास कर रहा हूँ। XBOX 360 संगत mp4-files के लिए .Mkv- फ़ाइलों को परिवर्तित करने के लिए।

#!/bin/bash
for f in "$@"
do
    echo "$f"
    HandbrakeCli -i "$f" -o ~/Movies/Handbrake/"${f%.*}.mp4" --preset "Normal" --mixdown "stereo" --subtitle "1" --width 720 --keep-display-aspect
done

समस्या यह है कि गंतव्य फ़ाइल नाम (हैंडब्रैकली से आउटपुट के अनुसार) में इनपुट फ़ाइल का पूरा पथ शामिल है। स्वाभाविक रूप से मैं केवल एक्सटेंशन के बिना फ़ाइल नाम में दिलचस्पी रखता हूं क्योंकि मैं .mp4।

मुझे शेल स्क्रिप्टिंग की आदत नहीं है इसलिए मदद की बहुत सराहना की जाती है!


जवाबों:


3

पहले रास्ता निकालें:

outf=${f##*/}

फिर एक्सटेंशन बदलें:

outf=${outf%.*}.mp4

(जरूरी नहीं कि उस क्रम में ही हो।)


2

चूंकि आप अपनी इनपुट फ़ाइल के विस्तार को जानते हैं, आप कह सकते हैं

new=~/Movies/Handbrake/"$(basename "$f" .mkv)".mp4
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.