मैं एक फ़ोल्डर में छवियों / वीडियो को कैसे स्थानांतरित और नाम बदल सकता हूं


3

मेरे सभी मोबाइल डिवाइस के फ़ोटो और वीडियो क्लाउड पर बैकअप किए जाते हैं और ड्रॉपबॉक्स के "कैमरा अपलोड" फीचर का उपयोग करके मेरे लैपटॉप के साथ सिंक्रनाइज़ किए जाते हैं। सभी तस्वीरें और वीडियो ड्रॉपबॉक्स फ़ोल्डर में "कैमरा अपलोड" फ़ोल्डर में जुड़ जाते हैं।

मैं अपने उपयोगकर्ता फ़ोल्डर में इन सभी को अपने फ़ोटो और वीडियो फ़ोल्डर में ले जाना चाहता हूं। मैं विंडोज 8 का उपयोग कर रहा हूं लेकिन यह प्रश्न विंडोज 7 के लिए भी हो सकता है।

आदर्श रूप से मैं चाहता हूं कि तस्वीरें My Picturesफ़ोल्डर में स्थानांतरित हो जाएं । फोटो तारीख नाम के एक फ़ोल्डर में होना चाहिए और उस फ़ोल्डर को वर्ष के नाम वाले फ़ोल्डर में होना चाहिए। उदाहरण के लिए, यदि 4 अक्टूबर, 2013 को एक तस्वीर ली गई थी, तो उसे अंदर होना चाहिएMy Pictures/2013/2013-10-04/

फोटो को स्वयं उस तिथि और समय पर बदला जाना चाहिए जब फोटो लिया गया था और उसके बाद मूल फ़ाइल नाम दिया गया था। उदाहरण के लिए यदि 4 अक्टूबर, 2013 को 14:05:07 पर एक तस्वीर ली गई थी और इसे IMG003.jpg कहा गया था,My Pictures/2013/2013-10-04/2013-10-04 14.05.07 IMG003.jpg

वीडियो समान काम करेंगे, लेकिन My Videosफ़ोल्डर में डाल दिए जाएंगे । उदाहरण के लिए, 1 अक्टूबर 2013 को 17:03:01 पर लिया गया एक वीडियो ले जाया जाएगाMy Videos/2013/2013-10-01/2013-10-01 17.03.01 VIDEO003.mpg

क्या कोई ऐप है जिसे मैं इस प्रक्रिया को स्वचालित करने के लिए उपयोग कर सकता हूं या यह बैच फ़ाइल का उपयोग करके किया जा सकता है?

जवाबों:


2

मान लें कि आप Windows 7/8 का उपयोग करते हैं जहां Powershell प्रीइंस्टॉल्ड है।

यह पॉवरशेल स्क्रिप्ट एक स्रोत फ़ोल्डर ( $source) से एक गंतव्य फ़ोल्डर ( $dest) तक फ़ाइलों की प्रतिलिपि बनाती है ।
आप $filterसरणी के साथ अपनी इच्छित फ़ाइलों के लिए फ़िल्टर करते हैं , उदाहरण के लिए केवल चित्र या वीडियो।

  • नया फ़ोल्डर बदल दिया गया है <destination_folder\old_subfolders\YYYY\YYYY-MM-DD>
  • नया फ़ाइल नाम बदल दिया गया है <YYYY-MM-DD hh.mm.ss oldfilename.extension>

हर पंक्ति पर टिप्पणी की जाती है और मैंने उद्देश्य से उपनाम का उपयोग नहीं किया है।

### set input folder
$source = "C:\My Dropbox\Camera Uploads"      

### set output folder
$dest = "C:\Users\<USERNAME>\My Pictures"

### set which file types to include/copy
$filter = @("*.png", "*.jpg", "*.jpeg")

### retrieve all files from source folder and pipe them to copy 
Get-ChildItem $source -include $filter -recurse | foreach {         

    ### build new destination folder string (syntax: destination folder + old subfolders + year + year-month-day)
    $destSub = $_.directoryname.Replace($source, $dest +'\'+ $_.CreationTime.Year +'\'+ $_.CreationTime.ToString("yyyy-MM-dd"))        
    $destSub

    ### check if new destination folder exists, otherwiese create new subfolder(s)
    if (-not (Test-Path -literalpath $destSub)) { New-Item $destSub -Type Directory }    

    ### build new file name string (syntax: new destination folder + year-month-date hours.minutes.seconds + oldname.extension)
    $destName = $destSub +'\'+ $_.CreationTime.ToString("yyyy-MM-dd hh.mm.ss") + ' ' + $_.name    
    $destName

    ### copy source file to new file name
    copy-item -literalpath $_.Fullname -destination $destName
    }

पहले, copy-itemकमांड के साथ स्क्रिप्ट का परीक्षण करें । बाद में आप की जगह ले सकता copy-itemसाथ move-item


इसके लिए धन्यवाद। मैंने यह कोशिश की है, लेकिन यह काम करने के लिए नहीं मिल सकता है। पहला मुद्दा यह था कि पॉवरशेल स्क्रिप्ट की अनुमति नहीं दे रहा था। एक बार जब मैंने इसे सॉर्ट किया, तो यह चलाने के लिए लग रहा था लेकिन कुछ भी नहीं किया। एक बार फिर थोड़ा और समय देने की कोशिश करूँगा। क्या ऐसा कोई कारण होगा कि स्क्रिप्ट ऐसी लगेगी जैसे वह चल रही थी और कोई त्रुटि संदेश नहीं फेंक रही थी लेकिन वास्तव में कुछ भी नहीं कर रही थी?
Iagdotme

मैंने बेहतर डिबगिंग ( $destSubऔर $destName) के लिए दो लाइनें जोड़ीं । ध्यान से देखो अगर वे सही ढंग से बना रहे हैं। [,] और \ वर्ण पर ध्यान दें। अपने डेस्कटॉप पर 2 या तीन फ़ाइलों के साथ एक साधारण परीक्षण केस सेट करें
nixda
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.