पाठ फ़ाइल या एक्सेल शीट में फ़ाइल नाम के साथ निर्देशिका में फ़ाइलों की तुलना और फ़िल्टर कैसे करें?


3

मेरे पास एक निर्देशिका में 100000 एमपी 3 फाइलें हैं, प्रत्येक फ़ाइल में एक यादृच्छिक फ़ाइल नाम है, और मेरे पास एक और एक्सेल शीट है जिसमें एमपी 3 फ़ाइल का नाम है और यह किसके लिए मैप करता है। क्या कोई स्क्रिप्ट विकसित करने का कोई तरीका है या 3 पार्टी सॉफ्टवेयर इन फ़ाइलों को 3 अलग-अलग फ़ोल्डर में वर्गीकृत करने में मदद कर सकता है

उदाहरण:

  • निर्देशिका में

फाइल जैसे: fasf4a5465.mp3, fasdf35434.mp3, vefbgwsbgg.mp3

  • एक्सेल में

    1. कॉलम 1: फ़ाइल का नाम = fasf4a5465.mp3, कॉलम 2 'फ़ाइल समूह' = Group1
    2. कॉलम 1: फ़ाइल का नाम = fasdf35434.mp3, कॉलम 2 'फ़ाइल समूह' = Group2
    3. कॉलम 1: फ़ाइल का नाम = vefbgwsbgg.mp3, कॉलम 2 'फ़ाइल समूह' = Group3

तो मेरा अंतिम आउटपुट तीन अलग-अलग फ़ोल्डर (समूह 1, Group2, ग्राउव रिंगटोन) होगा, 100000 एक्सेल शीट मैपिंग के अनुसार वर्गीकृत किया जाएगा।

चूंकि मेरे पास कई Mp3 फाइलें हैं, उनमें से प्रत्येक के लिए सुनना और उन्हें मैन्युअल रूप से वर्गीकृत करना कठिन है, इसलिए मुझे किसी तरह उनकी तुलना करने और उन्हें अलग-अलग स्थान पर रखने का एक तरीका चाहिए।

उसके लिए कोई वर्कअराउंड?


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

जवाबों:


1

मेरे पास एक निर्देशिका में 100000 एमपी 3 फाइलें हैं, प्रत्येक फाइल में एक यादृच्छिक है   फ़ाइल नाम, और मेरे पास एक और एक्सेल शीट है जिसमें एमपी 3 फ़ाइल है   नाम और यह किसके लिए मैप करता है। क्या कोई स्क्रिप्ट विकसित करने का कोई तरीका है या   3 पार्टी सॉफ्टवेयर इन फाइलों को 3 अलग में वर्गीकृत करने में मदद कर सकता है   फ़ोल्डर

  • एक्सेल में

    1. कॉलम 1: फ़ाइल का नाम = fasf4a5465.mp3, कॉलम 2 'फ़ाइल समूह' = Group1
    2. कॉलम 1: फ़ाइल का नाम = fasdf35434.mp3, कॉलम 2 'फ़ाइल समूह' = Group2
    3. कॉलम 1: फ़ाइल नाम = vefbgwsbgg.mp3, कॉलम 2 'फ़ाइल समूह' = Group3

ठीक है, इसलिए यह एक स्क्रिप्ट है जिसे आप ऐसा करना चाहते हैं फिर नीचे तर्क के साथ बचाव के लिए पॉवर्सशेल करें।

PowerShell स्क्रिप्ट चर समझाए गए

  • $ExcelFile =
    • आपको इस परिवर्तनशील बिंदु को अपने लिए बनाना होगा XLS या XLSX फ़ाइल (हाँ या तो एक काम करेगा) जिसमें मैपिंग शामिल है, या पंक्ति प्रति कॉलम मान जो पहला कॉलम है MP3 फ़ाइल का नाम और दूसरा कॉलम समूह का नाम या नया है सबफ़ोल्डर्स इन फ़ाइलों को कॉपी किया जाएगा।
  • $CSVFile =
    • आपको इस चर बिंदु को बनाने की आवश्यकता होगी CSV अस्थायी फ़ाइल परिवर्तित (एक्सेल में क्या है इसके आधार पर ( $ExcelFile )) बाकी के तर्क के लिए यह जादू है। यदि यह फ़ाइल पहले से मौजूद है, तो मैंने इसे अधिलेखित करने का तर्क दिया, ताकि स्थिर फ़ाइल नाम पर कोई चिंता न हो।
  • $MP3SourceDir =
    • आपको इस परिवर्तनशील बिंदु को अपने लिए बनाना होगा MP3 स्रोत निर्देशिका जहाँ ये फ़ाइल शुरू में फ़ाइल नामों के आधार पर से हड़पी जाएगी पहला कॉलम एक्सेल स्प्रेडशीट में। चेतावनी: आप अवश्य रखें \$($_.first) इस तर्क में तर्क - केवल अन्य पथ भाग में प्लग करें।
  • $NewMP3Dir =
    • आपको इस चर बिंदु को नए स्थान पर बनाने की आवश्यकता होगी जहाँ नया [समूह] दूसरा कॉलम लागू के लिए फ़ोल्डर्स बनाए जाएंगे पहला कॉलम MP3 कॉपी की जाने वाली फाइलें। चेतावनी: आप अवश्य रखें \$($_.second) इस तर्क में तर्क - केवल अन्य पथ भाग में प्लग करें।

PowerShell स्क्रिप्ट उदाहरण

$ExcelFile           = "C:\Path\Excel Worksheet.xlsx"
$CSVFile             = "C:\Path\ExportCSV.csv"
$Excel               = New-Object -ComObject excel.application
$Excel.visible       = $False
$Excel.displayalerts = $False
$WorkBook            = $Excel.Workbooks.Open("$ExcelFile")
$WorkSheet           = $Workbook.worksheets.Item(1)

If (Test-Path $CSVFile){
    Remove-Item $CSVFile
}

$WorkBook.SaveAs("$CSVFile", 6)
$Excel.quit()

Import-Csv "$CSVFile" -Header ("first","second") | ForEach {
    $MP3SourceDir = "D:\Path\SourceMP3\$($_.first)"
    $NewMP3Dir    = "D:\Path\NewMP3\$($_.second)"
    New-Item -ItemType Dir "$NewMP3Dir" -Force
    Copy-Item "$MP3SourceDir" -Destination "$NewMP3Dir\$($_.first)" -Force
    }

(ध्यान दें कि यह वह स्रोत है जो मुझे xls से csv रूपांतरण के लिए तर्क विचार मिला है और फिर csv फ़ाइल में सीमांकित मानों को पढ़ने के लिए फिर बाकी को करने के लिए मैंने बहुत सारे समायोजन किए हैं)

(यह स्क्रिप्ट अनिवार्य रूप से कॉलम ए और कॉलम बी (सभी पंक्तियों) में दो कॉलम [मैपिंग] मानों के साथ एक मौजूदा एक्सएलएस या एक्सएलएसएक्स फ़ाइल लेती है, और इसे सीएसवी प्रारूप में सीएसवी फ़ाइल में सहेजती है। फिर यह उस सीएसवी फ़ाइल और सीएसवी से पढ़ती है। स्तंभ A (प्रति पंक्ति या पंक्ति) का मान किसी अन्य फ़ोल्डर (या सबफ़ोल्डर) पर प्रतिलिपि करने के लिए फ़ाइल नाम के रूप में उपयोग किया जाता है, जो स्तंभ B CSV मान (एक ही पंक्ति या पंक्ति पर) है। प्रत्येक पंक्ति या पंक्ति में दो मान होने चाहिए। पहला फ़ाइल नाम के साथ और दूसरा एक फ़ोल्डर नाम होने के कारण - ये मान कॉपी करने के लिए कमांड चलाने के माध्यम से लूप किए गए हैं, आदि)

स्रोत: PowerShell XLS से CSV तक


इसके अलावा पॉवरशेल कमांड रीडिंग


@AZUZ कृपया मुझे बताएं कि क्या मेरे जवाब से आपकी समस्या हल हो गई है और कृपया समीक्षा भी करें एक उत्तर को स्वीकार करना यह सुनिश्चित करने के लिए कि यह प्रश्न और उत्तर साइट आपके प्रश्नों पर लूप बंद करने के लिए कैसे काम करती है, जिन्हें एक उत्तर मिलता है जो आपके मुद्दों को हल करने के लिए काम करता है। यह उतना ही सरल है और आपकी समस्या को हल करने वाले उत्तर के बगल में थोड़ा सा चेक मार्क चेक करता है।
Pimp Juice IT
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.