2.4.5 Batch files
2.4.5 Batch files
Συχνά σε ένα λειτουργικό σύστημα υπάρχει ανάγκη να ομαδοποιηθούν εντολές του ώστε να εκτελούνται σε σειρά η μία μετά την άλλη χωρίς να απαιτείται η συνεχής δακτυλογράφηση τους. Ιδιαίτερα αν οι εντολές πρέπει να εκτελούνται συχνά είναι σημαντικό να είναι ήδη γραμμένες μία μόνο φορά και να τις καλείτε όταν τις χρειάζεστε.
Για παράδειγμα φανταστείτε την παρακάτω σειρά ενεργειών σε φάκελο του υπολογιστή σας:
- Αντιγραφή όλων των αρχείων με επέκταση .dat σε κάποιον εξωτερικό δίσκο
- Διαγραφή όλων των αρχείων με προέκταση .bak
- Μετονομασία του πρώτου γράμματος των αρχείων που ξεκινούν με το γράμμα “a” σε “p”
- Αντιγραφή των αρχείων .py που βρίσκονται στο φάκελο c:\programs\python στο φάκελο σας.
Συνένωση όλων των αρχείων .py σε ένα ενιαίο αρχείο με όνομα programs.txt
Παράδειγμα 1
Η ομαδοποίηση των εντολών μπορούν να γίνουν σε απλά αρχεία κειμένου που έχουν την προέκταση .bat ή .cmd. Τα αρχεία αυτά στη συνέχεια μπορούν να κληθούν είτε δακτυλογραφώντας το όνομά τους σε γραμμή εντολών, είτε κάνοντας διπλό κλικ πάνω τους στην εξερεύνηση των αρχείων και θα εκτελέσουν το σύνολο των εντολών που περιέχουν. Τα αρχεία αυτά ονομάζονται batch files. Ένα παράδειγμα τέτοιου αρχείου βλέπετε στο «παράδειγμα 1».
Δημιουργία batch file
Για τη δημιουργία ενός batch file χρειάζεται ένας απλός editor (π.χ. ο edit των Windows ή το πρόγραμμα Notepad++) στο οποίο δακτυλογραφείτε τις εντολές στην συνέχεια αποθηκεύετε με προέκταση “.bat” ή “.cmd” και είναι έτοιμο.
Υλοποιήστε τη Δραστηριότητα 2.4.5.1
Γενικά, σε ένα batch file μπορείτε να χρησιμοποιήσετε όλες τις εντολές (Παράρτημα Ι) που χρησιμοποιούνται και στη γραμμή εντολών. Χρήσιμες εντολές είναι:
Εντολή |
Περιγραφή |
cd |
Μετακίνηση σε φάκελο |
choice |
Εμφανίζει στην οθόνη ένα μενού επιλογών Υ/Ν για να επιλέξει ο χρήστης. |
exist |
Ελέγχει αν υπάρχει κάποιο αρχείο |
exit |
Πραγματοποιεί έξοδο από την κονσόλα όταν τελειώσετε με τις εντολές που εκτελείτε και θέλετε να την κλείσετε. |
ipconfig |
Εμφανίζει πληροφορίες για τις ρυθμίσεις ip των Windows |
md |
Δημιουργία φακέλου |
pause |
Σταματά τη ροή των εντολών περιμένοντας να πατήσετε ένα πλήκτρο για να συνεχίσει. |
rd |
Διαγραφή φακέλου εφόσον ο φάκελος είναι κενός |
rem |
Τοποθετεί σχόλια έτσι ώστε να γίνει πιο κατανοητό το αρχείων ενεργειών που δημιουργείτε |
set |
Όταν εκτελεστεί χωρίς παραμέτρους εμφανίζει τις μεταβλητές συστήματος. Μπορείτε να ορίσετε και δικές σας παραμέτρους |
shutdown |
Εκτελεί επανεκκίνηση ή τερματισμό του υπολογιστή άμεσα ή σε καθορισμένο χρόνο. |
start |
Εκκινεί ένα αρχείο ή ένα πρόγραμμα |
systemInfo |
Εμφανίζει πληροφορίες για τον υπολογιστή όπου έτρεξε η εντολή |
title |
Αλλάζει το όνομα του παραθύρου της γραμμής εντολών σε κάποιο της επιλογής σας. Χρήσιμο όταν έχετε πολλαπλά batch files να τρέχουν. |
xcopy |
Αντιγράφει αρχεία και φακέλους σε διαδρομή που θα του δώσετε |
Παράμετροι
Κάθε batch file μπορεί να δεχτεί ένα πλήθος παραμέτρων όταν το καλείτε. Οι παράμετροι χωρίζονται πάντα με το «,». Κάθε παράμετρος αριθμείται με το σύμβολο % και έναν αριθμό από το 0 έως το 9. Η παράμετρος %0 είναι πάντα το όνομα του batch file που καλέσατε.
|
Παράδειγμα 3
|
Υλοποιήστε τη Δραστηριότητα 2.4.5.2
Η εντολή If
Η εντολή If χρησιμοποιείται για να ελεγχθούν παράμετροι ή μεταβλητές
που έχουν οριστεί σε ένα batch file προκειμένου να εκτελεστεί διαφορετικός
κώδικας ανά περίπτωση. Έτσι, στο Σφάλμα!
Το αρχείο προέλευσης της αναφοράς δεν βρέθηκε. δημιουργήθηκε η ανάγκη να
ελεγχθεί η παράμετρος που περάσατε για την περίπτωση που υπάρχει ο
συγκεκριμένος φάκελος. Χρησιμοποιώντας
την εντολή if μπορείτε να σταματήσετε την συνέχιση του batch file εφόσον
υπάρχει ήδη ο φάκελος mybooks εμφανίζοντας και ένα σχετικό μήνυμα λάθους.
Η εντολή If λειτουργεί ως εξής:
- Καλεί την εντολή exist η οποία δέχεται παράμετρο το όνομα του φακέλου που δηλώσατε κατά την εκτέλεση του batch file (mybooks). Η εντολή exist επιστρέφει αληθής αν υπάρχει ο φάκελος ή το αρχείο που έλεγξε
- Αν η επιστρεφόμενη τιμή είναι αλήθεια (που σημαίνει ότι υπάρχει ήδη ο φάκελος) τότε το batch file εμφανίζει το μήνυμα «Folder already Exist» και προχωρά στην εντολή pause.
- Αν επιστραφεί η τιμή ψευδής τότε εκτελείται το σύνολο των εντολών που υπάρχουν στην περίπτωση else και μετά εκτελείται το pause.
Προσοχή πρέπει να δοθεί ότι το σύνολο των
εντολών σε κάθε μία περίπτωση θα πρέπει να βρίσκονται μέσα σε παρενθέσεις.
|
Σε ένα batch file που δέχεται μία ή περισσότερες παραμέτρους καλό είναι να ελέγχετε αν αυτές πέρασαν σωστά σε πλήθος πριν συνεχίσετε σε οποιαδήποτε εκτέλεση εντολών. Για παράδειγμα στο παράδειγμα 5 το batch file περιμένει μία παράμετρο για να συνεχίσει. Αν δεν δοθεί κάποια παράμετρος θα εμφανίσει μήνυμα λάθους.
Για να εμφανίσετε ένα πιο επεξηγηματικό μήνυμα θα πρέπει να γίνει έλεγχος ότι πέρασε μία παράμετρο στο πρόγραμμα:
Παράδειγμα 5 Στη γραμμή 3 του παραπάνω κώδικα ελέγχεται αν η πρώτη παράμετρος είναι κενή χρησιμοποιώντας τον συγκριτικό τελεστή “ equ ” (συγκρίνει αν η παράμετρος %1 είναι ίση με το κενό). Σε αυτήν την περίπτωση εμφανίζεται το μήνυμα λάθους «Please give a folder name» και στη συνέχεια εκτελείται η εντολή goto end. Αν και γενικά η εντολή goto στην προγραμματισμό δεν συνίσταται να χρησιμοποιείται, στο batch file προσφέρει μια δυνατότητα άμεσης μεταφοράς της ροής των εντολών σε άλλο σημείο. Στη συγκεκριμένη περίπτωση στην γραμμή 18 παρατηρείστε το :end . Η γραμμή αυτή που ξεκινά με την άνω κάτω τελεία ονομάζεται ετικέτα και μπορεί να δοθεί σε μια εντολή goto για να εκτρέψει την πορεία εκτέλεσης. |
Άλλοι συγκριτικοί τελεστές που μπορούν να χρησιμοποιηθούν σε ένα batch file παρουσιάζονται στον παρακάτω πίνακα.
Συγκριτικοί τελεστές |
||
Τελεστής |
Περιγραφή |
Παράδειγμα |
EQU |
Ίσο με |
x EQU y |
NEQ |
Δεν είναι ίσο |
x NEQ y |
LSS |
Μικρότερο |
x LSS y |
LEQ |
Μικρότερο ή ίσο |
x LEQ y |
GTR |
Μεγαλύτερο από |
x GTR y |
GEQ |
Μεγαλύτερο ή ίσο |
x GEQ y |
Υλοποιήστε τη Δραστηριότητα 2.4.5.3