मेरे पास एक निर्देशिका में 100000 एमपी 3 फाइलें हैं, प्रत्येक फाइल में एक यादृच्छिक है
फ़ाइल नाम, और मेरे पास एक और एक्सेल शीट है जिसमें एमपी 3 फ़ाइल है
नाम और यह किसके लिए मैप करता है। क्या कोई स्क्रिप्ट विकसित करने का कोई तरीका है या
3 पार्टी सॉफ्टवेयर इन फाइलों को 3 अलग में वर्गीकृत करने में मदद कर सकता है
फ़ोल्डर
एक्सेल में
- कॉलम 1: फ़ाइल का नाम = fasf4a5465.mp3, कॉलम 2 'फ़ाइल समूह' = Group1
- कॉलम 1: फ़ाइल का नाम = fasdf35434.mp3, कॉलम 2 'फ़ाइल समूह' = Group2
- कॉलम 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 तक
इसके अलावा पॉवरशेल कमांड रीडिंग