Cosa significa %~dp0 e come funziona?
Trovo %~dp0
molto utile, e lo uso molto per rendere i miei file batch più portatili.
Ma l'etichetta stessa mi sembra molto criptica... Cosa fa il ~
? Il dp
significa unità e percorso? Il 0
si riferisce a %0
, il percorso del file batch che include il nome del file?
O è solo una strana etichetta?
Vorrei anche sapere se è una caratteristica documentata, o qualcosa che tende ad essere deprecato.
964
3
Chiamare
nella riga di comando dà un aiuto su questa sintassi (che può essere usata anche al di fuori di FOR, questo è solo il posto dove si può trovare l'aiuto).
Inoltre, la sostituzione dei riferimenti alle variabili FOR è stata migliorata. Ora puoi usare la seguente
Ci sono diverse lettere che puoi usare come
f
per "nome completo del percorso",d
per lettera di unità,p
per percorso, e possono essere combinate.%~
è l'inizio per ciascuna di queste sequenze e un numeroI
denota che lavora sul parametro%I
(dove%0
è il nome completo del file batch, proprio come hai supposto).(In primo luogo, vorrei raccomandare questo sito di riferimento utile per il lotto: http://ss64.com/nt/)
Poi solo un'altra utile spiegazione: http://htipe.wordpress.com/2008/10/09/the-dp0-variable/
E un riferimento più chiaro da qui:
%CmdCmdLine%
restituirà l'intera linea di comando come passata a CMD.EXE%*
restituirà il resto della linea di comando a partire dal primo argomento della linea di comando (in Windows NT 4, %* include anche tutti gli spazi iniziali)%~dn
restituirà la lettera di unità di %n (n può variare da 0 a 9) se %n è un percorso o un nome di file valido (no UNC)%~pn
restituirà la directory di %n se %n è un percorso o un nome di file valido (no UNC)%~nn
restituisce solo il nome del file di %n se %n è un nome di file valido%~xn
restituirà solo l'estensione del file di %n se %n è un nome di file valido%~fn
restituirà il percorso completamente qualificato di %n se %n è un nome di file o una directory validaAGGIUNGI 1
Ho appena trovato qualche buon riferimento per il misterioso operatore tilde
~
.La stringa
%~
è chiamata operatore percent tilde. Puoi trovarlo in situazioni come:%~0
.La stringa
:~
è chiamata operatore colon tilde. Puoi trovarlo come%SOME_VAR:~0,-1%
.AGGIUNGERE 2 - 1:12 PM 7/6/2018
%1-%9
si riferiscono agli argomenti della riga di comando. Se sono non valori di percorso validi,%~dp1
-%~dp9
si espanderanno tutti allo stesso valore di%~dp0
. Ma se sono valori di percorso validi, si espanderanno al suo valore di driver/path.Per esempio: (batch.bat)
Esegui 1:
Esecuzione 2:
http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/percent.mspx?mfr=true
La variabile
%0
in uno script batch è impostata sul nome del file batch in esecuzione. La sintassi speciale~dp
tra il%
e il0
dice fondamentalmente di espandere la variabile%0
per mostrare la lettera dell'unità e il percorso, che ti dà la directory corrente contenente il file batch!