Nikos_Vita Δημοσ. 26 Μαΐου 2009 Δημοσ. 26 Μαΐου 2009 Kαλησπέρα σας, Μάλλον δεν θα ξέρει κανείς τίποτα αλλά ας ρωτήσω... Αναζητώ κάποιο λογισμικό που να διαιρεί folder (split folder) σε ξεχωριστά folder. Εχω κάποια μεγάλα folder με πάρα πολλά αρχεία mp3 ... Θέλω αυτόματα να μπουν αυτά τα αρχεία σε ξεχωριστά folder και να βάλω περιορισμο στον αριθμό των αρχείων ανά folder ... Δύσκολα πράγματα ζητάω ε; Αν κάποιος ξέρει κάτι ας το αναφέρει. Ευχαριστώ
parsifal Δημοσ. 26 Μαΐου 2009 Δημοσ. 26 Μαΐου 2009 Βάσει τί κριτηρίων θέλεις να γίνεται ο διαχωρισμός; Αν σου αρκεί μόνο ο περιορισμός αρχείων ανά folder, τότε γίνεται και με ένα batch file η δουλειά...
Nikos_Vita Δημοσ. 26 Μαΐου 2009 Μέλος Δημοσ. 26 Μαΐου 2009 Βάσει τί κριτηρίων θέλεις να γίνεται ο διαχωρισμός; Αν σου αρκεί μόνο ο περιορισμός αρχείων ανά folder, τότε γίνεται και με ένα batch file η δουλειά... Ναι. Ο μόνος περιορισμός που θέλω είναι ο αριθμός αρχείων ανά folder. Θέλω σε κάθε folder να μπουν μέχρι 99 αρχεία. Αλλά με το "batch file" πως γίνεται αυτό;
parsifal Δημοσ. 26 Μαΐου 2009 Δημοσ. 26 Μαΐου 2009 Χμμμ, ήμουν σίγουρος ότι θα είναι εύκολο, αλλά το παρακάτω δε δουλεύει όπως υπολόγιζα: > REM @echo off set metrhths=0 set ypoloipo=0 set neoskatalogos=katalogos1 set postfix=1 for %%a in (*.mp3) do ( set /a metrhths+=1 set /a ypoloipo=%metrhths% %% 99 if ypoloipo equ 0 ( set /a postfix+=1 set neoskatalogos=katalogos%postfix% mkdir %neoskatalogos% ) mv "%%a" %neoskatalogos% ) Βλέπει κανείς κάποιο λάθος... ;
Nikos_Vita Δημοσ. 26 Μαΐου 2009 Μέλος Δημοσ. 26 Μαΐου 2009 Εγώ δυστυχώς δεν μπορώ να σε βοηθήσω. Δεν γνωρίζω από batch files... Αν ξέρει κάποιος άλλος ας βοηθήσει...
Nikos_Vita Δημοσ. 27 Μαΐου 2009 Μέλος Δημοσ. 27 Μαΐου 2009 Εχω ψάξει όλο το διαδίκτυο και δεν έχω βρει τίποτα. Περίεργα πράγματα... Εχουν βγάλει για τους MAC και είναι και FREEWARE!!!!! http://www.qtsync.com/foldersplitter.php
random Δημοσ. 28 Μαΐου 2009 Δημοσ. 28 Μαΐου 2009 οχι οτι δεν υπάρχει τίποτα. ενα βγαινει στα πρωτα γκουγλοαποτελεσματα, αλλα δεν ειναι δωρεάν. http://www.batchconverter.com/FolderSplitterMega-download-58324.shtml ενα δωρεάν, αλλα δεν το χωρίζει με αριθμό αρχείων, αλλα με βαση το μέγεθος http://www.softforall.com/Utilities/FileDisk/Directory_Splitter09040570.htm
Nikos_Vita Δημοσ. 28 Μαΐου 2009 Μέλος Δημοσ. 28 Μαΐου 2009 οχι οτι δεν υπάρχει τίποτα. ενα βγαινει στα πρωτα γκουγλοαποτελεσματα, αλλα δεν ειναι δωρεάν.http://www.batchconverter.com/FolderSplitterMega-download-58324.shtml ενα δωρεάν, αλλα δεν το χωρίζει με αριθμό αρχείων, αλλα με βαση το μέγεθος http://www.softforall.com/Utilities/FileDisk/Directory_Splitter09040570.htm Καλημέρα Το 1ο πρόγραμμμα το DEMO το έχω δοκιμάσει και είναι ασταθές. Κόλλαγε όταν έβρισκε στα folder πολλά αρχεία (πάνω από 500) κατά τη διάρκεια του COPY. Είναι γραμμένο σε Visual Basic και μάλλον η εταιρεία ή ο τύπος που το έχει αναπτύξει το έχουν παρατήσει... Το 2ο δεν το είχα πάρει είδηση, αλλά δεν μου κάνει αφού αναζητώ χωρισμό σε folder που να έχει ως περιορισμούς τον μέγιστο αριθμό αρχείων ανά folder και αλφαβητική ταξινόμηση...
parsifal Δημοσ. 30 Μαΐου 2009 Δημοσ. 30 Μαΐου 2009 Ορίστε μία πρώτη έκδοση από ένα πρόχειρο VBScript που σκάρωσα και κάνει (hopefully) αυτό που ζητάς: > ' DivideMP3s.vbs ' Author: parsifal ' Does not support files with non-latin characters in filename Option Explicit Dim StartFolder, Prefix, Postfix, Limit, ObjShell, ObjFolder, ObjFSO, Counter, NextFolderBaseName, NextFolderName, ObjFolderNew, NextFile, FileToMove StartFolder = InputBox("Provide a full path (e.g. E:\Files\Music\MyFolder):", "Enter Base MP3 folder") Prefix = InputBox("Created folders' name will start with:", "Output folders prefix") Postfix = 1 Limit = InputBox("Number of MP3s in each folder:", "Output folders' files limit") Limit = CInt(Limit) Set ObjShell = CreateObject("Shell.Application") Set ObjFolder = ObjShell.Namespace(StartFolder) Set ObjFSO = CreateObject("Scripting.FileSystemObject") Counter = 0 NextFolderBaseName = StartFolder & "\" & Prefix NextFolderName = NextFolderBaseName & Postfix Set ObjFolderNew = ObjFSO.CreateFolder(NextFolderName) For Each NextFile in ObjFolder.Items If Counter = Limit Then Postfix = Postfix + 1 NextFolderName = NextFolderBaseName & Postfix Set ObjFolderNew = ObjFSO.CreateFolder(NextFolderName) Counter = 0 End If Set FileToMove = ObjFSO.GetFile(StartFolder & "\" & NextFile) FileToMove.Move(NextFolderName & "\" & NextFile) Counter = Counter + 1 Next WScript.Quit Και σε συνημμένο αρχείο TXT (πρέπει να γίνει rename με κατάληξη .vbs για να εκτελεστεί με διπλό κλικ): DivideMP3s.txt Σημειώσεις: Δεν υποστηρίζει ακόμη αρχεία με ελληνικούς χαρακτήρες στο filename. Υποστηρίζει όμως καταλόγους που περιέχουν στο πλήρες path ελληνικούς χαρακτήρες Είναι η πρώτη μου προσπάθεια σε VB scripting, γι' αυτό μη βαράτε! Λόγω του προηγουμένου, το εκτελείτε με δική σας ευθύνη. Ουδεμία ευθύνη φέρω αν ανατινάξει το PC σας ή αν φάει το κατοικίδιό σας! Από μερικές δοκιμαστικές εκτελέσεις, φάνηκε να λειτουργεί ικανοποιητικά (εκτός των ελληνικών filenames) και με καλή ταχύτητα Το script δεν τερματίζεται κανονικά, στην τελευταία επανάληψη του For Each loop η iteration variable μάλλον παίρνει κάποια τιμή που δεν προέβλεψα Μερικά screenshots:
Nikos_Vita Δημοσ. 30 Μαΐου 2009 Μέλος Δημοσ. 30 Μαΐου 2009 Καλήσπερα και σε ευχαριστώ. Δυστυχώς το scipt έτρεξε μόνο μία φορά. Τις επόμενες φορές βγάζει error...
parsifal Δημοσ. 30 Μαΐου 2009 Δημοσ. 30 Μαΐου 2009 Αν τις επόμενες φορές που το τρέξεις, εισάγεις στο 1ο και στο 2ο dialog box ακριβώς τα ίδια με την 1η εκτέλεση (έστω D:\MyMP3s και newfolder αντίστοιχα), προσπαθεί να δημιουργήσει τον κατάλογο D:\MyMP3s\newfolder1 (newfolder2, κ.ο.κ.). Αν αυτοί οι κατάλογοι υπάρχουν ήδη από προηγούμενες εκτελέσεις (δεν τους έχεις αλλάξει όνομα ή δεν τους έχεις μετακινήσει αλλού), τότε η εκτέλεση θα αποτυγχάνει. Ιδανικά, θα πρέπει το base folder που δίνεις να περιέχει μόνο MP3s με λατινικά filenames και καθόλου υποκαταλόγους. Sorry, είναι η πρώτη μου προσπάθεια και το script έχει πραγματικά μηδαμινά επίπεδα error checking. Ίσως σκαρώσω κάτι καλύτερο και πιο robust (πιθανόν και crossplatform) σε C, όταν βρω λίγο χρόνο!
Nikos_Vita Δημοσ. 30 Μαΐου 2009 Μέλος Δημοσ. 30 Μαΐου 2009 Σε ευχαριστώ πολύ για όλα!...! Πραγματικά έχω μείνει έκπληκτος! Θα το δοκιμάσω αμέσως τώρα!...! ---------- Το μήνυμα προστέθηκε στις 19:50 ---------- Βγάζει πάλι το ίδιο error: Script: D:\_tmp\DivideMP3s.vbs Line: 33 Char: 2 Error: File not found Code: 800A0035 Source: Microsoft VBScript runtime error
parsifal Δημοσ. 30 Μαΐου 2009 Δημοσ. 30 Μαΐου 2009 Η δουλειά έγινε όμως; Ο βασικός κατάλογος που εισήγαγες στο 1ο dialog box είναι πλέον άδειος από αρχεία (τα οποία έχουν μετακινηθεί στους υποκαταλόγους που δημιούργησε το script); Λίγο πιο πάνω έγραψα το εξής: Το script δεν τερματίζεται κανονικά, στην τελευταία επανάληψη του For Each loop η iteration variable μάλλον παίρνει κάποια τιμή που δεν προέβλεψα
Nikos_Vita Δημοσ. 30 Μαΐου 2009 Μέλος Δημοσ. 30 Μαΐου 2009 όχι δυστυχώς δεν κάνει το split. Το error το βγάζει κατευθείαν. Φτιάχνει το 1ο folder το αφήνει άδεια και τελικά δεν κάνει το split....
parsifal Δημοσ. 30 Μαΐου 2009 Δημοσ. 30 Μαΐου 2009 Έκανα μία μικρή διορθωσούλα, τώρα το script δημιουργεί τους νέους υποκαταλόγους ένα επίπεδο πιο πάνω από τον base folder που εισάγουμε στο 1ο dialog box (το οποίο λύνει και το πρόβλημα με τις invalid τιμές στο for-each loop). Μάλλον η δημιουργία των υποκαταλόγων στον base folder όσο το script τρέχει δημιουργούσε το πρόβλημα: > ' DivideMP3s.vbs ' Author: parsifal ' Does not support files with non-latin characters in filename Option Explicit Dim StartFolder, Prefix, Postfix, Limit, ObjShell, ObjFolder, ObjFSO, Counter, NextFolderBaseName, NextFolderName, ObjFolderNew, NextFile, FileToMove StartFolder = InputBox("Provide a full path (e.g. E:\Files\Music\MyFolder):", "Enter Base MP3 folder") Prefix = InputBox("Created folders' name will start with:", "Output folders prefix") Postfix = 1 Limit = InputBox("Number of MP3s in each folder:", "Output folders' files limit") Limit = CInt(Limit) Set ObjShell = CreateObject("Shell.Application") Set ObjFolder = ObjShell.Namespace(StartFolder) Set ObjFSO = CreateObject("Scripting.FileSystemObject") Counter = 0 NextFolderBaseName = StartFolder & "\..\" & Prefix NextFolderName = NextFolderBaseName & Postfix Set ObjFolderNew = ObjFSO.CreateFolder(NextFolderName) For Each NextFile in ObjFolder.Items If Counter = Limit Then Postfix = Postfix + 1 NextFolderName = NextFolderBaseName & Postfix Set ObjFolderNew = ObjFSO.CreateFolder(NextFolderName) Counter = 0 End If Set FileToMove = ObjFSO.GetFile(StartFolder & "\" & NextFile) FileToMove.Move(NextFolderName & "\" & NextFile) Counter = Counter + 1 Next WScript.Quit . DivideMP3s.zip
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.