soma_g4 Δημοσ. 10 Σεπτεμβρίου 2008 Δημοσ. 10 Σεπτεμβρίου 2008 Kαλησπέρα σε όλη την παρέα θέλω να κάνω ένα .bat αρχείο που όταν το τρέχεις θα κάνει πολλα .bat αρχεία, αλλα κόλλησα άσχημα. Η εντολή είναι "copy con test.bat" αλλα όταν τελειώνεις το αρχείο για να αποθηκευτεί πατάς ή F6 ή ctrl+z και ENTER, και εμφανίζεται ένας χαρακτήρας ^Z. Μέσα στο .bat αρχείο μου , που θα κάνει πολλά .bat αρχεία αυτόματα, δεν μπορώ να περάσω αυτόν τον χαρακτήρα ώστε να του πω ότι τελειωσε το αρχείο αυτό και πάμε για άλλο. Ξέρει κάποιος να μου πει πως θα σταματήσω το copy con ? Ακολουθεί παράδειγμα με το πρόβλημα: επεξεργασία του test.bat --------------------------- copy con a.bat dir pause ^Z --------------> (autos o xaraktiras bgenei me ctrl+z h' F6) copy con b.bat dir/s pause ^Z ---------------------------
zozeo Δημοσ. 10 Σεπτεμβρίου 2008 Δημοσ. 10 Σεπτεμβρίου 2008 Δεν νομίζω οτι κατάλαβα ακριβώς τι θέλεις να κάνεις αλλα με τα λίγα που έπιασα πιστεύω οτι θέλεις να δημιουργείς πολλά αντίγραφά ενος αρχείου με συγκεκριμένο όνομα και μετά να τερματίζεις το εκτελέσιμο. Αν είναι αιτώ, τότε το μόνο που χρειάζεσαι είναι την πρώτη εντολή που βάζεις και τίποτε άλλο. Ότι έχεις απο δεύτερη σειρά και κάτω το σβηνεις όπως επίσης και το pause. Έτσι αυτό θα τρέξει θα κάνει την δουλεία του και θα τερματίσει.
A453 Δημοσ. 10 Σεπτεμβρίου 2008 Δημοσ. 10 Σεπτεμβρίου 2008 Ψηλέ, ούτε εγώ κατάλαβα τι θες να καταφέρεις. Είσαι σίγουρος πάντως πως δεν υπάρχει άλλος τρόπος πέραν του copy con? Κάποιος επεξεργαστής κειμένου ίσως; Κάτι σε ncedit.exe?
Bspus Δημοσ. 10 Σεπτεμβρίου 2008 Δημοσ. 10 Σεπτεμβρίου 2008 Αν καταλαβα καλα θες να φτιαξεις ενα bat που να περιεχει τις εντολες dir pause και ενα 2ο bat με τις εντολες dir/s pause Μπορεις να κανεις το εξης: > @echo off echo dir > a.bat echo pause >> a.bat echo dir /s > b.bat echo pause >> b.bat διαφορετικα οι εντολες dir και pause απλως εκτελουνται στο αρχικο bat. Δες και το παρακατω site για αναφορα στις εντολες και τη συνταξη http://www.ss64.com/
soma_g4 Δημοσ. 11 Σεπτεμβρίου 2008 Μέλος Δημοσ. 11 Σεπτεμβρίου 2008 για να γίνω σαφής, ----------------------- copy con file.bat dir pause ^Z ----------------------- και σου λεει: 1 file copied δηλαδή σου φτιάχνει ένα bat αρχείο που κάνει dir και pause. Ωραία ως εδώ αλλα το ^Z δεν είναι οι γνωστοί χαρακτήρες του πληκτρολογίου ^ και Z αλλα βγαίνει με το πάτημα του F6 ή CTRL + Z. Oταν φτιάχνεις το αρχείο χειροκίνητα (πληκτρολογώντας το) όλα καλά , πατάς το CTRL+Z ή F6 και το ^Z που βγαίνει λέει στο σύστημα ότι σταματάει ο κώδικας του αρχείου και το αρχείο φτιάχνεται. Oταν όμως θελω να φτιάξω ένα .bat αρχείο που στον κώδικα του μέσα θα φτιάχνει αρχεία .bat τότε έχω πρόβλημα. Πως θα δώσω στο "σύστημα" να καταλάβει ότι τελειώνει το πρώτο bat αρχείο και ξεκινάει το δεύτερο, αφού το ^Z βγαίνει μονο με πάτημα F6 ή CTRL+Z. π.χ ----------------- copy con 1.bat dir (εντολή 1η) pause (εντολή 2η) ^Ζ ( *** εδώ είναι το προβλημα *** ) copy con 2.bat dir/s (εντολή 1η) echo off (εντολή 2η) ^Ζ ( *** εδώ παλι είναι το προβλημα *** ) explorer folder -------------------------------- Κανονικα αν αυτα τα εγραφα με το"χερι" θα εφτιαχνα 2 αρχεια (1.bat και 2.bat) και θα ανοιγα τον φακελο "folder". Αν κανω copy ολες αυτες τις σειρες σε ενα αρχειο (.bat) θα επρεπε να μου τα κανει ολα αυτα μονο του. Ελα ομως που δεν μπορω να εισαγω το ^Z (τελος αρχειου) που βγενει μονο με το πατημα του CTRL+Z ή με F6. Αυτο το "ειδικο" ^Ζ αν το κανω copy/paste παλι το βλεπει σαν 2 χαρακτηρες, τον ^ και τον Ζ και οχι σαν τον χαρακτηρα που τερματιζει τον κωδικα του αρχειου. Ξερει κανενας πια εντολη κανει την δουλεια του ^Ζ ? Ελπιζω να εγινα κατανοιτος Ευχαριστω πολυ για τον χρονο που μου αφιερωνετε !
parsifal Δημοσ. 11 Σεπτεμβρίου 2008 Δημοσ. 11 Σεπτεμβρίου 2008 Όταν σε ένα batch file εκτελείται η εντολή >copy con 1.bat ...σταματά προσωρινά η εκτέλεσή του, αφού τρέχει εκείνη τη στιγμή η copy. Σε αυτό το σημείο, δεν υπάρχει τρόπος από το batch file να περάσεις πληροφορία στην copy, γιατί στις παραμέτρους της όρισες ως source το ειδικό αρχείο CON που σημαίνει CONSOLE, δηλαδή είσοδος από το πληκτρολόγιο. Άρα, πρέπει να πληκτρολογήσει ο χρήστης τα περιεχόμενα του 1.bat και να δώσει στο τέλος και τον ειδικό χαρακτήρα τερματισμού με CTRL+Z, οπότε θα εγγραφεί το αρχείο στο δίσκο, θα κλείσει το αντίστοιχο file handle, θα τερματιστεί η copy και θα περάσει η ροή εκτέλεσης πάλι στο αρχικό bat αρχείο. Τη λύση σε αυτό που θέλεις να κάνεις την έδωσε ο Bspus, με ανακατεύθυνση εξόδου (> / >>).
soma_g4 Δημοσ. 11 Σεπτεμβρίου 2008 Μέλος Δημοσ. 11 Σεπτεμβρίου 2008 omg δουλευει ! οπως ακριβως το ειπε ο Bspus ! ! ! ΣΑΣ ΕΥΧΑΡΙΣΤΩ ΠΑΡΑ ΠΟΛΥ ΟΛΟΥΣ ! ! ! ηταν η λυση για να κανω ενα προγραμμα 100 γραμμων σε 10 !
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.