Προς το περιεχόμενο

Διάσπαση Καταλόγων (Split Folders)


Nikos_Vita

Προτεινόμενες αναρτήσεις

Δημοσ.

ΣΕ ΕΥΧΑΡΙΣΤΩ ΠΟΛΥ!...! Πραγματικά πολύ καλή δουλειά και χρήσιμο το script.

 

Μία τελευταία ερώτηση...αν γίνεται φυσικά!...!

 

Μπορείς στο script να προσθέσεις την δυνατότητα στα folder τα αρχεία να μπαίνουν αλφαβητικά και όχι τυχαία;

 

Εχω π.χ. στην αρχή του κάθε Mp3 αύξοντα αριθμό και παρατηρώ ότι τα μοιράζει μπερδεμένα σε κάθε folder που φτιάχνει...

  • Απαντ. 35
  • Δημ.
  • Τελ. απάντηση
Δημοσ.

Χμμμ, σε εμένα δεν τα μοιράζει τυχαία, αλλά απολύτως αλφαβητικά. Μήπως μπορείς να αναπαράγεις το πρόβλημα με ένα σετάκι λίγων αρχείων (π.χ. πέντ' έξι) και να δώσεις τα ακριβή filenames τους για να δω τί συμβαίνει και στο δικό μου σύστημα... ;

Δημοσ.
Χμμμ, σε εμένα δεν τα μοιράζει τυχαία, αλλά απολύτως αλφαβητικά. Μήπως μπορείς να αναπαράγεις το πρόβλημα με ένα σετάκι λίγων αρχείων (π.χ. πέντ' έξι) και να δώσεις τα ακριβή filenames τους για να δω τί συμβαίνει και στο δικό μου σύστημα... ;

 

Θα το κάνω αλλά θα περιμένεις μέχρι αύριο γιατί θα έχω ξανά ίντερνετ αύριο...

 

Σε ευχαριστώ θερμά... :shifty:

Δημοσ.

Καλησπέρα!

 

Στο συννημένο αρχείο έχω ακριβώς την διάσπαση που έχω κάνει.

 

 

Τα folders είναι:

31/05/2009 19:54 <DIR> mp3_1

31/05/2009 19:54 <DIR> mp3_2

31/05/2009 19:54 <DIR> mp3_3

31/05/2009 19:54 <DIR> mp3_4

31/05/2009 19:54 <DIR> mp3_5

31/05/2009 19:54 <DIR> mp3_6

31/05/2009 19:54 <DIR> mp3_7

 

αλλά όπως βλέπεις το split έχει βάλει μπερδεμένα τα Mp3 στους καταλόγους...

 

Τα MP3 έχουν την μορφή XYZ_XY_filename.mp3

 

όπου XYZ αριθμοί αύξοντες π.χ.

 

168_01. Alex C. Feat. Y-ass - Du Hast Den Schoensten Arsch Der Welt.mp3

dir.zip

Δημοσ.

Νίκο, θα προσπαθήσω να δημιουργήσω αρχεία μηδενικού μεγέθους με τα ίδια ακριβώς filenames για να αναπαράγω το πρόβλημα. Για να διευκολυνθώ στη δημιουργία τους, γίνεται να ανεβάσεις ένα ακόμη directory listing μόνο με τα filenames; Π.χ.:

 

>cd F:\Mixes Jun2008\usb
f:
dir *.mp3 /s/b > mp3list.txt

Δημοσ.

Ελπίζω να είναι σωστό το DIR που επισυνάπτω ...

 

Αν δεν είναι πες μου και θα το επισυνάψω αύριο όμως γιατί τώρα πρέπει να αποχωρήσω...

 

Σε ευχαριστώ πολύ.

 

Η βοήθειά σου είναι πραγματική πολύτιμη... :shifty:

mp3list.zip

Δημοσ.

Δεν έβγαλα άκρη! Σε εμένα, το script χώρισε τα αρχεία με αλφαβητική σειρά. Στον κατάλογο mp3_1 τα αρχεία από 001_τάδε.mp3 μέχρι 099_τάδε.mp3, στον κατάλογο mp3_2 τα αρχεία από 100_τάδε.mp3 μέχρι 198_τάδε.mp3 και ούτω καθεξής.

 

 

Μήπως την ώρα που τρέχει το script έχεις ανοικτό κάποιο παράθυρο Windows Explorer που δείχνει στον κατάλογο με τα αρχεία mp3; Αν ναι, κλείσε το.

Δημοσ.

Σε ευχαριστώ πολύ.

 

Όντως πολύ περίεργα πράγματα.

 

Μήπως παίζει ρόλο το λειτουργικό σύστημα;

Εχω Windows ΧP...

Δημοσ.

Όταν έγραψα το script (τόσο την αρχική όσο και τη διορθωμένη εκδοχή), ήμουν σε XP. Μεσολάβησε από τότε μετάβασή μου σε Vista SP2. Όπως καταλαβαίνεις, ακόμη μεγαλύτερο μπέρδεμα! Αν και δε νομίζω πως παίζει κάποιο ρόλο το Λ/Σ, απ' ό,τι έχω καταλάβει τα objects που χρησιμοποιούνται στο script για πρόσβαση στα περιεχόμενα ενός καταλόγου είναι απαράλλαχτα και δουλεύουν με τον ίδιο τρόπο και σε παλαιότερες εκδόσεις Windows.

 

Θα επαναλάβω όμως αυτό που ρώτησα και πριν: Μήπως την ώρα που τρέχει το script έχεις ανοικτό κάποιο παράθυρο(-α) Windows Explorer που δείχνει στον κατάλογο με τα αρχεία mp3; Αν ναι, κλείσε το.

Δημοσ.

Το ξανάκανα και πάλι τα ίδια.

 

Παρατηρώ όμως ότι ακόμα και όταν κάνω Move τα αρχεία στο αρχικό folder για να ξανακάνω split δεν τα μεταφέρει με τη σειρά αλλά μπερδεμένα...

 

Περίεργα πράγματα...

 

Άλλαξα και τα DATE/TIME attributes μπας και φταίει αυτό αλλά τίποτα πάλι...

 

Για κάποιο λόγο το λειτουργικό μεταφέρει μπερδεμένα τα αρχεία.

 

Δεν νομίζω να φταίει το scipt. Είμαι σίγουρος ότι φταίει το λειτοργικό...

Δημοσ.
Είμαι σίγουρος ότι φταίει το λειτοργικό...

Ούτε το λειτουργικό φταίει, ούτε τα attributes. Γενικώς δε φταίει κάτι γι αυτό, είναι άλλος ο λόγος που γίνεται (είναι "τεχνικό" θέμα). Πρέπει να γίνει πρώτα λίστα με τα αρχεία, μετά sorting ανάλογα με τα επιθυμητά options ομαδοποίησης των αρχείων (πχ αλφαβητικά + αριθμός που λες) και μετά να μετακινηθούν τα αρχεία. Χρειάζεται δηλαδή ένα προγραμματάκι.

Δημοσ.

PCharon, εσύ βλέπεις κάποιο πρόβλημα με το enumeration των αρχείων στο script;

 

Χρησιμοποιώ τη μέθοδο Items του FolderObject που δείχνει στον κατάλογο-στόχο. Στο MSDN δεν αναφέρει αν η μέθοδος επιστρέφει τα περιεχόμενα με αλφαβητική σειρά, υπέθεσα (κακώς ίσως) ότι το κάνει.

Δημοσ.

Όπως είπα και παραπάνω, δεν φταίει τίποτα. Τα αρχεία επιστρέφονται πάντα με τη σειρά που έχουν δημιουργηθεί στο δίσκο (τουλάχιστον στα συστήματα αρχείων που χρησιμοποιούν τα Windows). Χρειάζεται επιπλέον διαδικασία για να τα πάρεις με κάποια σειρά (μετέπειτα sorting, ανάλογα με τα επιθυμητά κριτήρια) και αυτό δεν ξέρω αν μπορεί να γίνει με vbs (χρειάζεται κάποιο buffer κτλ, άρα πρέπει να φτιαχτεί προγραμματάκι).

 

 

 

Υ.Γ. Έχω απεγκατεστημένο το scripting στον υπολογιστή μου και δεν μποροώ να το δοκιμάσω σε κάθε περίπτωση.

 

Υ.Γ.2 Υπόσχομαι να φτιάξω ένα freeware που να κάνει τη δουλειά αυτή (αλλά δεν ξέρω πότε θα το κάνω, είμαι λίγο off).

 

Δημοσ.
Όπως είπα και παραπάνω, δεν φταίει τίποτα. Τα αρχεία επιστρέφονται πάντα με τη σειρά που έχουν δημιουργηθεί στο δίσκο (τουλάχιστον στα συστήματα αρχείων που χρησιμοποιούν τα Windows).

 

Μόλις έκανα μία δοκιμή με το παρακάτω script:

 

 

 

>
' ListFiles.vbs
' Author: parsifal
' Lists all contents of a given directory


Option Explicit

Dim TargetDir, ObjShell, ObjDir, ObjFSO, Counter, NextItem

TargetDir = InputBox("Provide a full path as the target directory (e.g. E:\Files\Music\MyFolder):", "Enter target dir")

Set ObjShell = CreateObject("Shell.Application")
Set ObjDir = ObjShell.Namespace(TargetDir)
Set ObjFSO = CreateObject("Scripting.FileSystemObject")

Counter = 0

For Each NextItem in ObjDir.Items
   Counter = Counter + 1
   MsgBox("Item number " & Counter & "'s name: " & NextItem)
Next

WScript.Quit

 

Συνημμένο: ListFiles.zip

 

 

 

 

...σε έναν κατάλογο στον οποίο δημιούργησα δύο μηδενικού μεγέθους αρχεία TXT: Πρώτα ένα με όνομα 02.txt και μετά ένα με όνομα 01.txt. Το script τυπώνει πρώτα το 01.txt και μετά το 02.txt.

Δημοσ.

Για δοκίμασε το ίδιο σε FAT32 και σε NTFS να δούμε. ;)

 

(νόμιζα πως συμβαίνει και στα δύο fs, αλλά τελικά μάλλον συμβαίνει μόνο στο FAT)

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...