viper2005 Δημοσ. 16 Αυγούστου 2015 Δημοσ. 16 Αυγούστου 2015 λοιπον εχω απειρους φακελους με rar μεσα σε ενα φακελο. Υπαρχει περιπτωση να φτιαχτει ενα batch αρχειο που να κανει extract τα αρχεια και μετα να σβηνει τα rar files? για αρχη εχω βρει οτι θα πρεπει να βρω το winrar path variable set path="C:\Program Files\WinRAR\";%path% επισης το command Που με ενδιαφερει ειναι το unrar x http://linux.die.net/man/1/unrar So, τι αλλα arguments θα πρεπει να βαλω? thanks
viper2005 Δημοσ. 16 Αυγούστου 2015 Μέλος Δημοσ. 16 Αυγούστου 2015 προσπαθησα να βαλω ενα script απο 7zip αλλα παιρνω το παρακατω error
micos000 Δημοσ. 16 Αυγούστου 2015 Δημοσ. 16 Αυγούστου 2015 (επεξεργασμένο) Το batch είναι το παρακάτω: @echo off set zp="C:\Program Files\7-zip\7z.exe" for /R %%f in (*.rar) do ( cd "%%~pf" @%zp% x -y *.rar REM @del /F /Q "%%f" ) Σώσε το bat στον κεντρικό φάκελο όπου θέλεις να ξεκινήσει η διαδικασία. Στην 2η γραμμή, στην εντολή set θα βάλεις μέσα στα "" το πλήρες path και το όνομα του εκτελέσιμου του 7zip. Εγώ έβαλα αυτό που δείχνεις στο δικό σου σκριπτάκι. Αν είναι κάτι άλλο διόρθωσε το. Υπ' όψιν, με την παράμετρο x τα αρχεία θα αποσυμπιέζονται στον φάκελο όπου βρίσκεται το rar. Αν μέσα στο rar υπάρχουν υποφάκελοι, αυτοί θα αποσυμπιέζονται κανονικά με το πλήρες path τους. Το @ δεν εμφανίζει τα μηνύματα που κανονικά θα εμφάνιζε η εντολή για να μην γεμίζει το παράθυρο. Αν θέλεις να βλέπεις τι αποσυμπιέζει σβήστο. Αν το σβήσεις όμως και είναι πάρα πολλά τα αρχεία θα καθυστερήσει αρκετά η διαδικασία. Επίσης, η παράμετρος -y θεωρεί σε όλες τις ερωτήσεις του 7zip ότι απαντάς Yes, δηλαδή στα overwrite κτλ. Φαντάζομαι ότι είναι αυτό που ζητάς. Το δοκίμασα και δουλεύει κανονικά σε ένα δοκιμαστικό φάκελο που έκανα. Τέλος, η del θα σβήσει τα rar όπως και να 'χει χωρίς να επιβεβαιώσει αν αποσυμπιέστηκαν σωστά, οπότε να έχεις πρόχειρο ένα backup σε περίπτωση που υπάρξει κάποιο πρόβλημα με τις αποσυμπιέσεις. Γι' αυτόν τον λόγο την έβαλα μετά από REM. ΑΝ δεν σε απασχολεί και έχεις backups σβήσε το REM από μπροστά. Αλλιώς μπορείς να κάνεις μετά μια αναζήτηση για *.rar στον φάκελο και να τα σβήσεις στο τέλος, αφού έχεις βεβαιωθεί ότι όλα πήγαν καλά. Εναλλακτικά μπορείς να τρέξεις κανονικά το σκριπτάκι και αφού βεβαιωθείς ότι όλα πήγαν καλά να διαγράψεις την εντολή "@%zp x -y *.rar" και το REM μπροστά από την DEL και να το ξανατρέξεις για να διαγράψεις ότι rar βρει. Επεξ/σία 17 Αυγούστου 2015 από micos000 3
viper2005 Δημοσ. 16 Αυγούστου 2015 Μέλος Δημοσ. 16 Αυγούστου 2015 δεν δουλευει Επισης μπορεις να μου εξηγησεις τι εστι: /R = ? %%f = loop? in = operator? "%%~pf = ? /F = ? /Q = ? REM = ? thanks edit μετα απο καμποσο ψαξιμο βρηκα αυτο και δειχνει να δουλευει καπως @echo FOR /D /r %%F in ("*") DO ( pushd %CD% cd %%F FOR %%X in (*.rar *.zip) DO ( "C:\Program Files\7-zip\7z.exe" x "%%X" ) popd ) PAUSE το προβλημα ειναι οτι δεν δουλευει σε καποιους φακελους. μετα απο λιγο ψαξιμο ειδα οτι τα αρχεια αυτων των φακελων ειχαν την εξης ιδιαιτεροτητα υπαρχει περιπτωση να φταιει αυτο;
μπουρτζοβλαχος Δημοσ. 16 Αυγούστου 2015 Δημοσ. 16 Αυγούστου 2015 Το batch είναι το παρακάτω: @echo off set zp="C:\Program Files\7-zip\7z.exe" for /R %%f in (*.rar) do ( cd "%%~pf" @%zp x -y *.rar REM @del /F /Q "%%f" ) με μια μικρη διορθωση χωρις το zp= μπροστα και διπλα μετα το path του 7zip.exe οπου χ folder path αποσυμπιεσης καπως ετσι @echo off "C:\Program Files\7-zip\7z.exe" x "c:\Users\folder\rar" for /R %%f in (*.rar) do ( cd "%%~pf" @%zp x -y *.rar @del /F /Q "%%f" )
micos000 Δημοσ. 17 Αυγούστου 2015 Δημοσ. 17 Αυγούστου 2015 @μπουρτόβλαχος, φίλε δεν έχει πρόβλημα στη δήλωση της μεταβλητής με την set αλλά στην ανάκτηση της για την αποσυμπίεση. Το πρόβλημα είναι στο %zp που θέλεις ένα ακόμα % μετά για να αναγνωριστεί σαν μεταβλητή, δηλαδή @%zp% x -y *.rar αντί για @%zp x -y *.rar @viper2005 Όσο για το unblock, αυτό το διορθώνεις εύκολα. Κατέβασε το zip από εδώ και ακολούθησε τις οδηγίες. Μετά πάρε την κυριώτητα (take ownership) από τον όλον τον φάκελο και ξανατρέξε το σκριπτάκι (με διορθωμένη την %zp% ). Αυτό το σκριπτάκι που χρησιμοποίησες κάνει το ίδιο με αυτό που σου έδωσα, απλά δεν χρειάζεσαι τις εντολές pushd και popd, οι οποίες το μόνο που κάνουν είναι να αποθηκεύουν τον τρέχοντα φάκελο (pushd) στην αρχή και να τον ανακτούν (popd) στο τέλος έτσι ώστε να σε επιστρέφει στον φάκελο όπου εκτέλεσες ο script. Αυτό έχει νόημα μόνο όταν τρέχεις το script από command prompt για να μην αναγκαστείς μετά να κάνεις cd.. μέχρι να επιστρέψεις στον αρχικό φάκελο. Όταν το τρέχεις σαν bat αρχείο από την εξερεύνηση δεν χρησιμεύει σε τίποτα. Όσο για την απορεία σου με τους operators της for... /R = προχωράει και στους υποφάκελους και όχι μόνο στον τρέχοντα φάκελο %%f = αυτή είναι η βασική μεταβλητή που θα παίρνει τιμές από την for και δεν είναι ανάγκη να είναι το f, μπορεί να είναι οποιοδήποτε γράμμα. in = τι θα ψάχνει η for, στην περίπτωση σου για αρχεία με κατάληξη rar (*.rar) και θα τα περνάει στην μεταβλητή %%f "%%~pf = παίρνει μόνο το path της τιμής της μεταβλητής (f) χωρίς το γράμμα του δίσκου. Άλλες περιπτώσεις είναι %%nf=μόνο το όνομα του αρχείου χωρίς το path, %%~ff=όλο το path μαζί με το γράμμα δίσκου κτλ. Δεν χρησιμοποίησα το %%~ff γιατί το 7zip δεν δεχόταν απόλυτο path (C:\xxx\yyy\aaa.rar) για παράμετρο και ήθελε χωρίς το γράμμα δίσκου (xxx\yyy\aaa.rar). /F =είναι η βασική παράμετρος της for για loop (όχι το /R που ρώτησες στην αρχή.) /Q =αυτό που το είδες; Η for παίρνει μόνο /D (όταν οι χαρακτήρες μπαλαντερ * και ? χρησιμοποιούνται για ονόματα φακέλων και όχι αρχείων) /R (για επεξεργασία υποφακέλων) /L (όταν η δηλωμένη ομάδα είναι ακολουθία αριθμών με αρχή, βήμα και τέλος, π.χ. 0,2,10 δλδ από το ο μέχρι το 10 ανά 2) ή /F (το βασικό για loop της for) REM = αυτό δηλώνει ότι, ότι ακολουθεί μετά την rem και μέχρι το τέλος της γραμμής είναι σχόλιο (remark) και να αγνοηθεί. Στο σκριπτάκι μου αγνοείτε την del γιατί έχει μπροστά το REM. Γι αυτό σου είπα ότι αν όλα πάνε καλά σβήσε το rem από την del και βάλε ένα μπροστά από την %zp% ή σβήσε τελείως την γραμμή με την %zp%. Βασικά η for είναι μια πολύ ισχυρή εντολή στα batch αρχεία και θέλει αρκετό δούλεμα για να καταλάβεις πως δουλεύει. Μπορείς να δώσεις σε command prompt την παρακάτω εντολή for /? για να δεις όλες τις παραμέτρους της. Δες εδώ για χρήση της for, καθώς και τα related στο τέλος της σελίδας για της παραμέτρους r d l f. Στο site έχει βοήθειες και για τις υπόλοιπες εντολές για batch scripting. 1
viper2005 Δημοσ. 17 Αυγούστου 2015 Μέλος Δημοσ. 17 Αυγούστου 2015 Το εκανα αυτό με το take ownership αλλ δεν του έκανε κούκου. Θα δοκιμασω το batch σου αργότερα. Thanks
micos000 Δημοσ. 17 Αυγούστου 2015 Δημοσ. 17 Αυγούστου 2015 Μπορείς να κάνεις μια αναζήτηση για όλα τα αρχεία rar στον φάκελο και αφού τα επιλέξεις όλα στο παράθυρο με τα αποτελέσματα να πας ιδιότητες και να κάνεις unblock καθώς και να αφαιρέσεις το read only.
viper2005 Δημοσ. 17 Αυγούστου 2015 Μέλος Δημοσ. 17 Αυγούστου 2015 Ο φάκελος είναι 1 tb και από τι βλέπω δεν είναι όλα τα αρχεία σε τέτοια φάση. Θα το κοιτάξω.
viper2005 Δημοσ. 17 Αυγούστου 2015 Μέλος Δημοσ. 17 Αυγούστου 2015 το ετρεξα το scriptaki σου αλλα παιρνω το απο κατω @echo set zp="C:\Program Files\7-zip\7z.exe" for /R %%f in (*.rar) do ( cd "%%~pf" @%zp% x -y *.rar ) PAUSE μετα δοκιμασα αυτο @echo FOR /D /r %%F in ("*") DO ( pushd %CD% cd %%F FOR %%X in (*.rar *.zip) DO ( "C:\Program Files\7-zip\7z.exe" x "%%X" ) popd ) PAUSE και ουτε αυτο ετρεξε μετα προσπαθησα να το ανοιξω με το 7zip αλλα πηρα ενα σφαλμα του στυλ "cant open file". To δοκιμασα με το winrar Και ανοιξε κανονικα... δαιμονισμενο ειναι; edit αλλαξα το path απο C:\Program Files\7-zip\7z.exe σε C:\Program Files\WinRAR\WinRAR.exe και δουλεψε καπως. Το προβλημα ειναι οτι εχει το παρακατω διαλογο... παιζει να φτιαχτει καπως; thanks edit στο edit ψαχνωντας το argument/switch εδω http://acritum.com/software/manuals/winrar/ βρηκα το "-y" και εφτιαξε καπως. @echo FOR /D /r %%F in ("*") DO ( pushd %CD% cd %%F FOR %%X in (*.rar *.zip) DO ( "C:\Program Files\WinRAR\WinRAR.exe" x "-y" "%%X" ) popd ) PAUSE ερωτηση μπορει να διαβασει καποιος τα switch και να μου πει αν υπαρχει γραμμα για delete files after extraction και extract files to a folder που θα εχει το ονομα του rar? thanks /R = προχωράει και στους υποφάκελους και όχι μόνο στον τρέχοντα φάκελο %%f = αυτή είναι η βασική μεταβλητή που θα παίρνει τιμές από την for και δεν είναι ανάγκη να είναι το f, μπορεί να είναι οποιοδήποτε γράμμα. in = τι θα ψάχνει η for, στην περίπτωση σου για αρχεία με κατάληξη rar (*.rar) και θα τα περνάει στην μεταβλητή %%f "%%~pf = παίρνει μόνο το path της τιμής της μεταβλητής (f) χωρίς το γράμμα του δίσκου. Άλλες περιπτώσεις είναι %%nf=μόνο το όνομα του αρχείου χωρίς το path, %%~ff=όλο το path μαζί με το γράμμα δίσκου κτλ. Δεν χρησιμοποίησα το %%~ff γιατί το 7zip δεν δεχόταν απόλυτο path (C:\xxx\yyy\aaa.rar) για παράμετρο και ήθελε χωρίς το γράμμα δίσκου (xxx\yyy\aaa.rar). /F =είναι η βασική παράμετρος της for για loop (όχι το /R που ρώτησες στην αρχή.) /Q =αυτό που το είδες; Η for παίρνει μόνο /D (όταν οι χαρακτήρες μπαλαντερ * και ? χρησιμοποιούνται για ονόματα φακέλων και όχι αρχείων) /R (για επεξεργασία υποφακέλων) /L (όταν η δηλωμένη ομάδα είναι ακολουθία αριθμών με αρχή, βήμα και τέλος, π.χ. 0,2,10 δλδ από το ο μέχρι το 10 ανά 2) ή /F (το βασικό για loop της for) REM = αυτό δηλώνει ότι, ότι ακολουθεί μετά την rem και μέχρι το τέλος της γραμμής είναι σχόλιο (remark) και να αγνοηθεί. Στο σκριπτάκι μου αγνοείτε την del γιατί έχει μπροστά το REM. Γι αυτό σου είπα ότι αν όλα πάνε καλά σβήσε το rem από την del και βάλε ένα μπροστά από την %zp% ή σβήσε τελείως την γραμμή με την %zp%. Βασικά η for είναι μια πολύ ισχυρή εντολή στα batch αρχεία και θέλει αρκετό δούλεμα για να καταλάβεις πως δουλεύει. Μπορείς να δώσεις σε command prompt την παρακάτω εντολή for /? για να δεις όλες τις παραμέτρους της. Δες εδώ για χρήση της for, καθώς και τα related στο τέλος της σελίδας για της παραμέτρους r d l f. Στο site έχει βοήθειες και για τις υπόλοιπες εντολές για batch scripting. Το batch είναι το παρακάτω: @echo off set zp="C:\Program Files\7-zip\7z.exe" for /R %%f in (*.rar) do ( cd "%%~pf" @%zp% x -y *.rar REM @del /F /Q "%%f" ) REM @del /F /Q "%%f"
micos000 Δημοσ. 17 Αυγούστου 2015 Δημοσ. 17 Αυγούστου 2015 Με την σειρά. Πρώτα για το rar. Μπορεί να είναι είναι winrar 5 έκδοση και να μην υποστηρίζεται άμεσα από το 7zip... who knows. Με το παραθυρικό 7zip ανοίγει; Μετά για το ότι δεν αποσυμπίεζε το σκριπτάκι σου. Πρέπει να βάλεις διπλό % (δλδ %%X) στις παραμέτρους της for για το winrar. Στο screenshot το έχεις με ένα % ενώ στο edit το διόρθωσες με δύο. Η διαφορά είναι ότι το ένα % στην for χρησιμοποιείται όταν δίνεις απευθείας την εντολή στο command prompt ενώ όταν την χρησιμοποιείς σε batch scripting πρέπει να βάλεις διπλό %% Πάντως, θα πρέπει να χρησιμοποιήσεις το unrar.exe αντί για το winrar.exe όταν πρόκειται για σκριπτάκια. Επίσης, γιατί έβαλες τον διακόπτη -y σε εισαγωγικά; Οι διακόπτες δεν μπαίνουν σε εισαγωγικά. Το -y θεωρεί σε όλες τις ερωτήσεις που μπορεί να εμφανίσει το unrar το yes σαν απάντηση. Ο λόγος που δούλεψε το τελευταίο script είναι ότι διόρθωσες το %%X Για τα /F και /Q Σόρυ, νόμιζα ότι έψαχνες την q και την f σε παραμέτρους της for. Στο σκριπτάκι μου το /Q σημαίνει ότι η del θα λειτουργεί σε quite mode και δεν θα ρωτάει για τίποτα.να διαγράψει το κάθε αρχείο. Αν δεν το βάλεις θα σε ρωτάει συνέχεια αν είναι ΟΚ. Το /F στην del σημαίνει ότι θα κάνει force delete τα read only αρχεία χωρίς να ρωτήσει. Μπορείς να τα δεις όλα όπως είπα στο λινκ που σου έδωσα ή αν δώσεις την οποιαδήποτε εντολή με /? στο τέλος, π.χ. del /? cd /? for /? ren /? κτλ EDIT μπορείς να προσθέσεις το o+ στο unrar για να κάνεις overwrite ή το o- για να μην κάνει overwrite, προτείνω το o- 1
viper2005 Δημοσ. 18 Αυγούστου 2015 Μέλος Δημοσ. 18 Αυγούστου 2015 Στην σελίδα με τις εντολές του winrar, το yes to all το εχει σαν "-y". Επίσης δουλευει αλλα μου τα πετάει χύμα μες τον φάκελο. Edit Κάποια rar δεν δουλεύουν με το 7zip
micos000 Δημοσ. 18 Αυγούστου 2015 Δημοσ. 18 Αυγούστου 2015 Τα switches δεν θέλουν "". Εκεί που το είδες το βάζουν σε εισαγωγικά για να ξεχωρίζει από το υπόλοιπο κείμενο. Η αποσυμπίεση σε υποφάκελο που να έχει το όνομα του αρχείου γίνεται προσθέτοντας ένα "%%~nf\" στην εντολή αποσυμπίεσης στο script. Η νέα έκδοση έχει ως εξής: @echo off for /R %%f in (*.rar) do ( cd "%%~pf" "C:\Program Files\WinRAR\unrar.exe" x -o- *.rar "%%~nf\" REM del "%%f" ) Αφαίρεσα την set για να μην σε μπερδεύει και απενεργοποίησα και την del για να μη σβήνει τα αρχεία. Αν θέλεις να τα σβήνει κάνε όπως είπα στο 6ο Post. Διέγραψε το REM από τη γραμμή της del και διέγραψε τη γραμμή του unrar. Έτσι το μόνο που θα κάνει θα είναι να σβήσει τα αρχεία που αποσυμπίεσε. Και ν' αφήσεις όμως την εντολή για το unrar δεν θα κάνει κάτι γιατί το -o- δηλώνει ότι δεν θα προσπαθήσει να κάνει overwrite τίποτα με αποτέλεσμα να μην ξανά-αποσυμπιέσει τα ίδια αρχεία.
viper2005 Δημοσ. 18 Αυγούστου 2015 Μέλος Δημοσ. 18 Αυγούστου 2015 Το yes to all argument το έβαλα γιατι μου έβγαζε μήνυμα για overwrite παρόλο που δεν υπήρχε τπτ για να κανει overwrite. Δηλαδή για κάθε part μου έβγαζε το dialogue που ποσταρα ποιο πάνω. Θα το δοκιμάσω αργότερα και θα σου πω. Thanks
micos000 Δημοσ. 18 Αυγούστου 2015 Δημοσ. 18 Αυγούστου 2015 Σου ζητούσε για overwrite στα multi part archives επειδή αποσυμπίεζε από το κάθε part τα ίδια αρχεία. Το -o- απενεργοποιεί το overwrite και δεν θα σε ξαναρωτήσει.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα