Batch File Programming (Part 1)

Το παρακάτω άρθρο, είναι αφιερωμένο στα γνωστά αρχεία με προέκταση bat (αρχεία δέσμης MS-DOS), ο προγραμματισμός των οποίων ονομάζεται batch programming, κάτι ανάλογο με το shell scripting (ή shell programming) για unix based συστήματα.

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

Όταν εκτελούνται τα αρχεία αυτά, το λειτουργικό σύστημα εκτελεί τις εντολές που υπάρχουν μέσα σ’ αυτά, ανά σειρά.
Οι βασικοί κανόνες όταν γράφουμε ένα τέτοιο αρχείο είναι αυτοί που ισχύουν και όταν πληκτρολογούμε τις εντολές απευθείας στο command prompt. Δηλαδή δεν είναι case sensitive, που θα πει πως τα κεφαλαία με τα μικρά γράμματα έχουν πάντα το ίδιο αποτέλεσμα. Τα κενά δεν έχουν σημασία όταν είναι συνεχόμενα, αλλά πολύ σημαντική είναι η αλλαγή σειράς (όπως ακριβώς είναι και το enter όταν λειτουργούμε στο command prompt).
Για να λειτουργήσει σωστά ένα αρχείο bat, πρέπει να έχει δημιουργηθεί με απλό text editor τύπου notepad και να έχει φυσικά την προέκταση bat.

Παρακάτω, έχουμε κάποιες από τις ποιο συνηθισμένες εντολές που χρησιμοποιούνται στα αρχεία batch.

Η εντολή ECHO εμφανίζει ό,τι ακολουθεί μετά από αυτή, στην οθόνη. Αν θέλουμε απλά να αφήσουμε μια κενή σειρά στην οθόνη, χρησιμοποιούμε την εντολή ακολουθούμενη απλά απο μια τελεία
ECHO.
Με την εντολή ECHO μπορούμε ακόμη να ενεργοποιήσουμε και να απενεργοποιήσουμε την εμφάνιση των εκτελούμενων εντολών στην οθόνη (ECHO ON και ECHO OFF αντίστοιχα).

Επίσης, μπορούμε να αποτρέψουμε την εμφάνιση μιας εντολής με ενεργοποιημένο το echo προσθέτοντας μπροστά από την εντολή το @. Οπότε για να απενεργοποιηθεί το echo σε ένα αρχείο bat χωρίς να γίνει αντιληπτό, μπορύμε να χρησιμοποιήσουμε την εξής εντολή:
@ECHO OFF
Αξίζει να πούμε πως όταν το echo χρησιμοποιείται για να εμφανίσουμε κάτι στην οθόνη, αυτό θα εμφανιστεί κατά την εκτέλεση ακόμη και αν έχει προηγηθεί η εντολή ECHO OFF.

Όμως, η διαδικασία αυτή δεν αποκρύπτει τα αποτελέσματα των επόμενων εντολών που εμφανίζονται στην οθόνη. Για να επιτευχθεί αυτό, πρέπει να αλλάξουμε την έξοδο των αποτελεσμάτων από την οθόνη, που είναι η προεπιλογή σε κάτι άλλο (πχ σε ένα αρχείο).
Αυτό μπορεί να γίνει με τη χρήση του συμβόλου >.
Όταν δε θέλουμε να εμφανιστούν πουθενά τα αποτελέσματα μιας εντολής μπορούμε να πληκτρολογήσουμε μετά από αυτή τα εξής: (κάποια εντολή) > NUL
Μια ακόμα πολύ χρήσιμη ιδιότητα του συμβόλου > είναι οτι μπορεί να αποθηκεύσει την έξοδο μιας εντολής σε κάποιο αρχείο της επιλογής μας. Για παράδειγμα, με την εντολή DIR > c:\abc.txt αποθηκεύονται τα περιεχόμενα του τρέχοντος καταλόγου στο αρχείο abc.txt. Σε περίπτωση που το αρχείο υπάρχει, θα αντικατασταθεί, ενώ αν δεν υπάρχει, θα δημιουργηθεί. Σε περίπτωση που θέλουμε να προσθέσουμε τα αποτελέσματα στο τέλος του υπάρχοντος αρχείου, πρέπει να χρησιμοποιήσουμε διπλό το σύμβολο. Δηλαδή το προηγούμενο παράδειγμα πρέπει να γραφτεί έτσι:
DIR >> c:\abc.txt
Και στην περίπτωση αυτή, αν το αρχείο δεν υπάρχει, θα δημιουργηθεί.

Με τη χρήση του %, ακολουθούμενο από έναν αριθμό, συμβολίζονται τα command line arguments. Το %0 είναι το όνομα του αρχείου bat και με το %1 και έπειτα συμβολίζονται τα arguments που ακολούθησαν κατά την εκτέλεση του αρχείου. Για παράδειγμα, έχουμε το αρχείο asd.bat, το οποίο έχει τα εξής περιεχόμενα:
echo %0
echo %1
del %2

αν εκτελέσουμε το αρχείο πληκτρολογώντας
asd.bat aaa zxc.txt
θα εμφανιστεί στην οθόνη το asd.bat, έπειτα το aaa και τέλος θα διαγραφεί το αρχείο zxc.txt.
Η εντολή SHIFT μετακινεί τα περιεχόμενα των arguments κατά ένα νούμερο πιο πάνω κάθε φορά που χρησιμοποιείται. Δηλαδή, την πρώτη φορά που θα εκτελεστεί, τα περιεχόμενα του %0 θα μεταφερθούν στο %1, του %1 στο %2 κτλ. Το νόημα της εντολής αυτής έχει να κάνει κυρίως με το ότι τα συμβολιζόμενα arguments είναι 10, αφού οι αριθμοί που επιτρέπεται να χρησιμοποιηθούν μετά το % είναι από το 0 μέχρι το 9. Οπότε, η SHIFT μας δίνει τη δυνατότητα να εισάγουμε περισσότερα από 9 arguments (πράγμα σπάνιο).

Με την εντολή REM, βάζουμε τα γνωστά σχόλια στα αρχεία bat. Όποια σειρά ξεκινάει με την εντολή αυτή, δεν εκτελείται, καθυστερεί όμως αισθητά το χρόνο εκτέλεσης του αρχείου, οπότε πρέπει να χρησιμοποιείται με τη σχετική προσοχή.

Με την εντολή PAUSE σταματά προσωρινά η εκτέλεση του αρχείου, μέχρι ο χρήστης να πατήσει κάποιο πλήκτρο.

Με την GOTO μεταφερόμαστε στο label που ορίσαμε μέσα το αρχείο bat. Για να ορίσουμε ένα label βάζουμε το : και έπειτα το όνομα που θέλουμε. Στο παρακάτω παράδειγμα δε θα εκτελεστεί καμία εντολή, εκτός από την GOTO αφού μεταφερόμαστε στο τέλος του αρχείου.
GOTO ENDOFFILE
CLS
ECHO EXAMPLE
ECHO.
PAUSE
:ENDOFFILE

Μια ακόμη χρήσιμη εντολή είναι η ΕΧΙΤ, με την οποία σταματάμε την εκτέλεση του αρχείου οριστικά, βγαίνουμε από το command prompt, στο οποίο εκτελούνται οι εντολές και επιστρέφουμε στα Windows.

1 σχόλιο

  1. [...] περισσότερα περί bat αρχείων διαβάστε εδώ) Το αρχείο bat προφανώς χρησιμοποιείται για την [...]


Σχόλια RSS TrackBack Identifier URI

Γράψτε ένα σχόλιο