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

7-z Files Individually


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

Δημοσ.

Καλησπέρα σε όλους. Χρειάζομαι μια βοήθεια με το 7-z

Θέλω να συμπιέσωσε μορφή 7z διάφορα αρχεία, όχι φακέλους, μεμονωμένα. πχ

file1.txt

file2.txt

file3.txt 

κ.ο.κ.

Υπάρχει κάποιος τρόπος να γίνε αυτό χωρίς να τα επιλέγω ένα-ενα, μια ςκ αμιλάμε για εκατοντάδες. 

Για τους φακέλους έχω ένα .bat

(for /d %%X in (*) do "c:\Program Files\7-Zip\7z.exe" a "%%X.7z" "%%X\") 

που ότα το τρέχω συμπίεζει τον κάθε φάκελο ξεχωριστά.

Μπορεί να γίνει κάτι παρόιμοιo και με τα διάφορα αρχεία;

 

Δημοσ.
4 ώρες πριν, Cacciatore είπε

Καλησπέρα σε όλους. Χρειάζομαι μια βοήθεια με το 7-z

Θέλω να συμπιέσωσε μορφή 7z διάφορα αρχεία, όχι φακέλους, μεμονωμένα. πχ

file1.txt

file2.txt

file3.txt 

κ.ο.κ.

Υπάρχει κάποιος τρόπος να γίνε αυτό χωρίς να τα επιλέγω ένα-ενα, μια ςκ αμιλάμε για εκατοντάδες. 

Για τους φακέλους έχω ένα .bat

(for /d %%X in (*) do "c:\Program Files\7-Zip\7z.exe" a "%%X.7z" "%%X\") 

που ότα το τρέχω συμπίεζει τον κάθε φάκελο ξεχωριστά.

Μπορεί να γίνει κάτι παρόιμοιo και με τα διάφορα αρχεία;

 

Δοκιμάστε αυτή την εντολή: (for %%F in (*.*) do "c:\Program Files\7-Zip\7z.exe" a "%%~nF.7z" "%%F")

  • Like 1
Δημοσ. (επεξεργασμένο)

Ευχαριστώ πάρα πολύ. Δούλεψε. 

Μια απορία, επειδή έχω στραβωθεί. Η διαφορά "for %%F" απο την εντολή "for %%i" ποια είναι; 

Γιατί διάβαζα διάφορα στο νετ πριν ρωτησω εδώ, αλλά σε δοκιμές που έκανα, μου δημιουργούταν 7z αρχειο με κενο περιεχόμενο

 

Επεξ/σία από Cacciatore
Δημοσ. (επεξεργασμένο)
4 ώρες πριν, Cacciatore είπε

Ευχαριστώ πάρα πολύ. Δούλεψε. 

Μια απορία, επειδή έχω στραβωθεί. Η διαφορά "for %%F" απο την εντολή "for %%i" ποια είναι; 

Γιατί διάβαζα διάφορα στο νετ πριν ρωτησω εδώ, αλλά σε δοκιμές που έκανα, μου δημιουργούταν 7z αρχειο με κενο περιεχόμενο

 

Καμία διαφορά. To F και το i είναι απλά μεταβλητές και βάζεις ότι θέλεις εσύ. Μπορείς να βάλεις ότι θέλεις, αλλά θα πρέπει να χρησιμοποιείς το ίδιο όνομα σε όλο το script σου και είναι case sensitive, δηλαδή η %%F είναι διαφορετική από την %%f. Το διπλό %% σε σχέση με το μονό % είναι ότι η for όταν χρησιμοποιείτε μέσα σε bat file παίρνει το διπλό στη δήλωση την μεταβλητής ενώ όταν χρησιμοποιείτε σαν ξερή εντολή παίρνει το μονό.

Μπορείς να δεις πιο αναλυτικά τις παραμέτρους και την χρήση όλων των εντολών αν δώσεις σε cmd την εντολή  και στο τέλος προσθέσεις κενό-slash-question mark δηλαδή for /?

Επεξ/σία από micos000
  • Like 1
Δημοσ. (επεξεργασμένο)

Καλό το 7-zip αλλά θέλει πολύ δουλειά ακόμα για το interface του. Εγώ προτιμώ το winrar πάντως...

spacer.png

Με ένα κλικ κάνει αυτό που ζητάς.

Επεξ/σία από micos000
Δημοσ.

Thanx για τις επισημάνσεις. To peazip παλιότερα που το είχα δοκιμάσει, γι καποιο λογο ´παγωνέ. 
Το winrar δε το χρησιμοποιώ στα windows για τι μου την δίνει απίστευτα στα νεύρα το καλσσικο purchase warning

 

Μια ακόμα ερώτηση 

Πως μπορώ να τροποποίησω το bat για τους φακέλους ώστε να συμπιέζει τα αρχεία που βρίσκει μέσα στον φάκελο, χωρίς να περιλαμβάνει τον parent?

 

Δημοσ. (επεξεργασμένο)

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

FOLDER01
  |
  |--- SubFolder1
  |--- SubFolder2
  |--- file1
  |--- file2

Και θέλω να τα συμπιέσω μαζικά  ώστε να έχουν αυτήν την δομή

COMPRESSED FOLDER01.7z
  |
  |--- SubFolder1
  |--- SubFolder2
  |--- file1
  |--- file2

και όχι έτσι

COMPRESSED FOLDER01.7z
  |
  |--- FOLDER01
          |
          |--- SubFolder1
          |--- SubFolder2
          |--- file1
          |--- file2

 

 

Επεξ/σία από Cacciatore
Δημοσ.

Thaanx. Αυτό για έναν-εναν φακελο ξεχωριστά. 

Αυτό που θα ήθελα να δω αν μπορεί να γίνει είναι με μαζικούς φακέλους, να τους διαλέξω όλους και να συμπιέζει τα περιεχόμενά τους ξεχωριστά μέσα σε κάθε .7z χωρίς τον parent top-level folder

Δημοσ.

Βασικά, το 7zip έχει ένα κακό. Δεν συμπεριλαμβάνει τους άδειους φάκελους οπότε αν έχεις κάτι τέτοιο  να ξέρεις ότι δεν θα υπάρχουν στο τελικό συμπιεσμένο αρχείο.

Επίσης εμένα για κάποιον λόγο δεν μου βάζει του υποφάκελους και συμπιέζει μόνο τα αρχεία.

Πάντως για να μπαίνει στους φάκελους και να κάνει δουλειά ξεχωριστά για τον καθένα θα χρησιμοποιήσεις τις παρακάτω εντολές...

for /D %%S in (*) do (
cd "%%S"
-----ΕΝΤΟΛΗ ΓΙΑ 7ZIP-----
cd..
)

 

  • Like 1
Δημοσ.

Για μελλοντικό reference, τελικά στην εντολή που παρέθεσε ο φίλος micos, αν αντικαταστησουμε το cd με τις εντολες pushdir/popdir λειρουργεί κανονικά, ψάχνοντας και συμπιέζοντας όλα τα περιεχόμαν ενός φακέλου, χωρίς τον parent top-level folder

Συγκεκριμένα δλδ η εντολή γίνεται 

for /D %%Χ in (*) do (
	pushd "%%X"
	"c:\Program Files\7-Zip\7z.exe" a "..\%%X.7z" *
popd
)
  • Like 1
Δημοσ. (επεξεργασμένο)

Σωστά. Χτες βιαζόμουν και το άφησα μισό. Τις pushd/popd τις σκέφτηκα μετά αλλά βλέπω ότι το κατάλαβες και το διόρθωσες.

Nice.

EDIT:

Αυτό με τους άδειους φάκελους που έγραψα πριν το είδες;

23 ώρες πριν, micos000 είπε

Επίσης εμένα για κάποιον λόγο δεν μου βάζει του υποφάκελους και συμπιέζει μόνο τα αρχεία.

 

Επεξ/σία από micos000
Δημοσ. (επεξεργασμένο)

btw, Αν θέλεις βάλε και το παρακάτω στην αρχή για να μην σου βγάζει πολλές άχρηστες πληροφορίες (1η γραμμή), να τρέχει από τον φάκελο όπου βρίσκεται το σκριπτ ακόμα και αν το τρέξεις σαν διαχειριστής (2η γραμμή) γιατί αν το τρέξεις έτσι το bat θα σε πάει στον φάκελο C:\windows\system32 και θα αρχίσει να συμπιέζει εκεί και να σου δείχνει το φάκελο εργασίας και να περιμένει να πατήσεις ένα πλήκτρο αν όλα είναι σωστά (3η-6η γραμμή).

@echo off
cd "%~dp0"
echo Working directory is: %cd%
echo.
echo Is everything OK?
pause

 

Επεξ/σία από micos000
  • Like 1

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...