Jump to content
  • entries
    47
  • comments
    96
  • views
    25821

Εκτελώντας πολλές εντολές μαζί υπό συνθήκες


afotakel

1038 views

 Share

Ενίοτε συμβαίνει να θέλουμε αν εκτελέσουμε μια εντολή από τη γραμμή εντολών αλλά υπό προϋποθέσεις. Για παράδειγμα, θέλουμε να δημιουργήσουμε ένα φάκελο μόνο εφόσον δεν υπάρχει ήδη. Ή, αντίστροφα,θέλουμε να εκκινήσουμε μια εφαρμογή μόνο εφόσον η προηγούμενη εντολή που δώσαμε απέτυχε. Αυτό μπορούμε να το πετύχουμε χρησιμοποιώντας τους τελεστές “&”, “&&” και “||”.

 

Παράδειγμα1: Θέλω να εκτελέσω 2 εντολές μαζί, τη μια μετά από την άλλη:

dir C:\ & dir C:\windows

Πρώτα θα εκτελεστεί το “dir C:\” και κατόπιν, ανεξαρτήτως αποτελέσματος, θα εκτελεστεί το “dir C:\windows”.

 

Παράδειγμα2: Θέλω να εκτελεστεί η 2η εντολή μόνο εφόσον η 1η εκτελεστεί επιτυχώς:

dir C:\NonExistingFolder && dir C:\windows

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

 

Παράδειγμα3: Θέλω να εκτελεστεί η 2η εντολή μόνο εφόσον η 1η αποτύχει:

 

dir C:\NonExistingFolder || dir C:\windows

Στην περίπτωση αυτή, το “dir C:\windows” θα εκτελεστεί κανονικά.

Αν δώσω όμως

dir C:\ExistingFolder || dir C:\windows

τότε το dir C:\windows” δεν θα εκτελεστεί καθόλου.

 

Αν θέλετε μπορείτε να το κάνετε και πιο σύνθετο βάζοντας πολλούς τελεστές μαζί. π.χ.

dir C:\ && dir C:\ExistingFolder || dir C:\windows

Στην περίπτωση αυτή, το “dir C:\windows” δεν θα εκτελεστεί ποτέ, αφού ο φάκελος ExistingFolder υπάρχει. Το “||” δηλαδή σχετίζεται μόνο με την αμέσως προηγούμενη εντολή.

Αν θέλω το “dir C:\windows” να εκτελεστεί μόνο εφόσον αποτύχει τουλάχιστον μια εκ των δυο προηγούμενων εντολών, μπορώ να βάλω παρενθέσεις:

(dir C:\NonExistingFolder1 & dir C:\NonExistingFolder2) || “dir C:\windows”

 

Εννοείται ότι τα παραπάνω μπορούμε να τα εφαρμόσουμε και μέσα σε αρχεία batch.

Που μπορεί να φανούν χρήσιμα όλα αυτά; Προσωπικά μου έχει φανεί χρήσιμο σε διάφορες περιπτώσεις. Κυρίως όμως σε 2:

1. Θέλω να εκτελέσω κάποια εντολή σε ένα απομακρυσμένο σύστημα, ανάλογα όμως με το εάν απαντάει στα ping. Οπότε δίνω ping host1 || script.cmd

Το script.cmd θα εκτελεστεί μόνο εφόσον το σύστημα δεν απαντήσει στο ping.

 

2. Θέλω να εκτελέσω απομακρυσμένα μια εντολή που εάν δεν εκτελεστεί επιτυχώς θα χάσω την απομακρυσμένη σύνδεση. Στην περίπτωση αυτή χρησιμοποιώ το “||” για να ξεκινήσω με το χέρι το σχετικό listener που θα μου επιτρέψει να συνδεθώ εκ νέου και να διαπιστώσω τι πήγε στραβά.

 Share

8 Comments


Recommended Comments

Σε αυτό το σημείο κύριε afotakel μήπως θα μπορούσατε να γράψετε και ένα άρθρο που να έχει όλες τις συντομέυσεις του στυλ , %username% , %klpklp% όποτε ψάχνω να τα βρώ πάντα ψάχνω και ποτέ μου δεν τα έχω βρει συγκεντρομένα.

ΕΥΧΑΡΙΣΤΩ!!!

Link to comment
Guest
Add a comment...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...