Περισσότερα
Τι σημαίνει %~dp0 και πώς λειτουργεί;
Βρίσκω το %~dp0
πολύ χρήσιμο και το χρησιμοποιώ συχνά για να κάνω τα αρχεία batch μου πιο φορητά.
Αλλά η ίδια η ετικέτα μου φαίνεται πολύ αινιγματική... Τι κάνει το ~
; Το dp
σημαίνει δίσκος και διαδρομή; Μήπως το 0
αναφέρεται στο %0
, τη διαδρομή προς το αρχείο δέσμης που περιλαμβάνει το όνομα του αρχείου;
Ή είναι απλά μια περίεργη ετικέτα;
Θα ήθελα επίσης να ξέρω αν πρόκειται για ένα τεκμηριωμένο χαρακτηριστικό ή για κάτι που τείνει να καταργηθεί.
964
3
Καλώντας
στη γραμμή εντολών δίνει βοήθεια σχετικά με αυτή τη σύνταξη (η οποία μπορεί να χρησιμοποιηθεί και εκτός FOR, αυτό είναι απλά το μέρος όπου μπορεί να βρεθεί η βοήθεια).
Επιπλέον, η αντικατάσταση της FOR
Υπάρχουν διαφορετικά γράμματα που μπορείτε να χρησιμοποιήσετε όπως
f
για "πλήρες όνομα διαδρομής",d
για γράμμα δίσκου,p
για διαδρομή, και μπορούν να συνδυαστούν. Το%~
είναι η αρχή για κάθε μία από αυτές τις ακολουθίες και ένας αριθμόςI
δηλώνει ότι λειτουργεί με την παράμετρο%I
(όπου%0
είναι το πλήρες όνομα του αρχείου δέσμης, όπως ακριβώς υποθέσατε).(Πρώτον, θα ήθελα να συστήσω αυτόν τον χρήσιμο ιστότοπο αναφοράς για την παρτίδα: http://ss64.com/nt/)
Στη συνέχεια, άλλη μια χρήσιμη εξήγηση: http://htipe.wordpress.com/2008/10/09/the-dp0-variable/
Και μια πιο σαφή αναφορά από εδώ:
Το
%CmdCmdLine%
θα επιστρέψει ολόκληρη τη γραμμή εντολών όπως έχει περάσει στο CMD.EXEΤο
%*
θα επιστρέψει το υπόλοιπο της γραμμής εντολών ξεκινώντας από το πρώτο όρισμα της γραμμής εντολών (στα Windows NT 4, το %* περιλαμβάνει επίσης όλα τα κενά στην αρχή).%~dn
θα επιστρέψει το γράμμα μονάδας δίσκου του %n (το n μπορεί να κυμαίνεται από 0 έως 9) εάν το %n είναι έγκυρη διαδρομή ή όνομα αρχείου (όχι UNC)%~pn
θα επιστρέψει τον κατάλογο του %n αν το %n είναι έγκυρη διαδρομή ή όνομα αρχείου (όχι UNC)%~nn
θα επιστρέψει μόνο το όνομα αρχείου του %n αν το %n είναι έγκυρο όνομα αρχείου%~xn
θα επιστρέψει την επέκταση αρχείου μόνο του %n αν το %n είναι έγκυρο όνομα αρχείου%~fn
θα επιστρέψει την πλήρως χαρακτηρισμένη διαδρομή του %n εάν το %n είναι έγκυρο όνομα αρχείου ή κατάλογος.ADD 1
Μόλις βρήκα κάποια καλή αναφορά για τον μυστηριώδη τελεστή
~
tilde.Η συμβολοσειρά
%~
ονομάζεται τελεστής percent tilde. Μπορείτε να τον βρείτε σε περιπτώσεις όπως: - Ο τελεστής τελενδίου είναι ένας από τους πιο σημαντικούς τελεστές που υπάρχουν:%~0
.Η συμβολοσειρά
:~
ονομάζεται τελεστής τελεία τελεία. Μπορείτε να τον βρείτε όπως:%SOME_VAR:~0,-1%
.ADD 2 - 1:12 PM 7/6/2018
Τα
%1-%9
αναφέρονται στα args της γραμμής εντολών. Αν είναι μη έγκυρες τιμές διαδρομής, τα%~dp1
-%~dp9
θα επεκταθούν όλα στην ίδια τιμή με την%~dp0
. Αλλά αν είναι έγκυρες τιμές διαδρομής, θα επεκταθούν στη δική τους τιμή οδηγού/διαδρομής.Για παράδειγμα: (batch.bat)
Εκτέλεση 1:
Εκτέλεση 2:
http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/percent.mspx?mfr=true
Η μεταβλητή
%0
σε ένα σενάριο δέσμης ορίζεται στο όνομα του αρχείου δέσμης που εκτελείται. Η ειδική σύνταξη~dp
μεταξύ του%
και του0
ουσιαστικά λέει να επεκτείνετε τη μεταβλητή%0
ώστε να εμφανιστεί το γράμμα του δίσκου και η διαδρομή, η οποία σας δίνει τον τρέχοντα κατάλογο που περιέχει το αρχείο δέσμης!