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

Ενας DOS-as ρε παιδια !


soma_g4

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

Δημοσ.

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

---------------------------

Δημοσ.

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

 

Αν είναι αιτώ, τότε το μόνο που χρειάζεσαι είναι την πρώτη εντολή που βάζεις και τίποτε άλλο. Ότι έχεις απο δεύτερη σειρά και κάτω το σβηνεις όπως επίσης και το pause. Έτσι αυτό θα τρέξει θα κάνει την δουλεία του και θα τερματίσει.

Δημοσ.

Ψηλέ, ούτε εγώ κατάλαβα τι θες να καταφέρεις.

Είσαι σίγουρος πάντως πως δεν υπάρχει άλλος τρόπος πέραν του copy con? Κάποιος επεξεργαστής κειμένου ίσως; Κάτι σε ncedit.exe?

Δημοσ.

Αν καταλαβα καλα θες να φτιαξεις ενα 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/

Δημοσ.

για να γίνω σαφής,

-----------------------

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 χαρακτηρες, τον ^ και τον Ζ και οχι σαν τον χαρακτηρα που τερματιζει τον κωδικα του αρχειου.

Ξερει κανενας πια εντολη κανει την δουλεια του ^Ζ ?

 

Ελπιζω να εγινα κατανοιτος

 

Ευχαριστω πολυ για τον χρονο που μου αφιερωνετε !

Δημοσ.

Όταν σε ένα batch file εκτελείται η εντολή

>copy con 1.bat

...σταματά προσωρινά η εκτέλεσή του, αφού τρέχει εκείνη τη στιγμή η copy. Σε αυτό το σημείο, δεν υπάρχει τρόπος από το batch file να περάσεις πληροφορία στην copy, γιατί στις παραμέτρους της όρισες ως source το ειδικό αρχείο CON που σημαίνει CONSOLE, δηλαδή είσοδος από το πληκτρολόγιο. Άρα, πρέπει να πληκτρολογήσει ο χρήστης τα περιεχόμενα του 1.bat και να δώσει στο τέλος και τον ειδικό χαρακτήρα τερματισμού με CTRL+Z, οπότε θα εγγραφεί το αρχείο στο δίσκο, θα κλείσει το αντίστοιχο file handle, θα τερματιστεί η copy και θα περάσει η ροή εκτέλεσης πάλι στο αρχικό bat αρχείο.

 

Τη λύση σε αυτό που θέλεις να κάνεις την έδωσε ο Bspus, με ανακατεύθυνση εξόδου (> / >>).

Δημοσ.

omg δουλευει !

οπως ακριβως το ειπε ο Bspus ! ! !

 

ΣΑΣ ΕΥΧΑΡΙΣΤΩ ΠΑΡΑ ΠΟΛΥ ΟΛΟΥΣ ! ! !

 

ηταν η λυση για να κανω ενα προγραμμα 100 γραμμων σε 10 !

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

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

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