Πώς μπορώ να περάσω ορίσματα σε ένα αρχείο δέσμης;

Πρέπει να περάσω ένα αναγνωριστικό και έναν κωδικό πρόσβασης σε ένα αρχείο δέσμης κατά τη στιγμή της εκτέλεσης αντί να τα κωδικοποιήσω στο αρχείο.

Να πώς μοιάζει η γραμμή εντολών:

test.cmd admin P@55w0rd > test-log.txt

Μια άλλη χρήσιμη συμβουλή είναι η χρήση του %* για να σημαίνει "όλα". Για παράδειγμα:

echo off
set arg1=%1
set arg2=%2
shift
shift
fake-command /u %arg1% /p %arg2% %*

Όταν εκτελείτε:

test-command admin password foo bar

το παραπάνω αρχείο δέσμης θα εκτελεστεί:

fake-command /u admin /p password admin password foo bar

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

Σχόλια (9)

Αν θέλετε να χειριστείτε έξυπνα τις ελλείπουσες παραμέτρους, μπορείτε να κάνετε κάτι τέτοιο:

IF %1.==. GOTO No1
IF %2.==. GOTO No2
... do stuff...
GOTO End1

:No1
  ECHO No param 1
GOTO End1
:No2
  ECHO No param 2
GOTO End1

:End1
Σχόλια (4)

Ναι, και απλά μην ξεχνάτε να χρησιμοποιείτε μεταβλητές όπως %%1 όταν χρησιμοποιείτε if και for και τα λοιπά.

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

Σχόλια (5)