So che %0contiene il percorso completo dello script batch, ad esc:\path\to\my\file\abc.bat
Vorrei pathessere uguale ac:\path\to\my\file
Come potrei farlo?
So che %0contiene il percorso completo dello script batch, ad esc:\path\to\my\file\abc.bat
Vorrei pathessere uguale ac:\path\to\my\file
Come potrei farlo?
Risposte:
%~dp0sarà la directory. Ecco della documentazione su tutti i modificatori di percorso . Cose divertenti :-)
Per rimuovere la barra rovesciata finale, è possibile utilizzare la :n,msintassi della sottostringa, in questo modo:
SET mypath=%~dp0
echo %mypath:~0,-1%
Sfortunatamente, non credo che ci sia un modo per combinare la %0sintassi con la :~n,msintassi.
%~0\..- sapevo che doveva esserci un modo migliore! Inoltre, probabilmente vorrai racchiuderlo %~dp0tra virgolette doppie ( "") nel caso in cui ci siano spazi nel nome della directory, ecc.
%~dp0contiene il simbolo `` alla fine. Hai idea di come rimuoverlo?
SET msg=hello worldfunziona benissimo). Tuttavia, quando usi% mypath% altrove, devi fare attenzione a usarlo tra virgolette, anche se non sono necessari per cdnessuno dei due.
È possibile utilizzare il seguente script per ottenere il percorso senza trascinare "\"
for %%i in ("%~dp0.") do SET "mypath=%%~fi"
%~dp0può essere un percorso relativo. Per convertirlo in un percorso completo, prova qualcosa del genere:
pushd %~dp0
set script_dir=%CD%
popd
%~dp0direttamente?
%~dp0può essere relativo, il che può essere o meno un problema a seconda del caso d'uso
%~dp0non può contenere un percorso relativo, dsta per drive e pper path, come può essere relativo un drive?
%~dp0sarà un percorso assoluto anche quando lo script è stato eseguito come percorso relativo. Grazie al commento di Jeb, non sono stato ingannato da questa risposta. Perché le persone semplicemente inventano cose e vanno e iniziano a diffondere la loro immaginazione selvaggia agli altri. Ho questo collega che lo fa, ma ho incolpato la sua (giovane) età. Vorrei che il mio voto negativo conta.
È possibile utilizzare %~dp0, d indica solo l'unità, p indica solo il percorso, 0 è l'argomento per il nome file completo del file batch.
Ad esempio, se il percorso del file fosse C: \ Users \ Oliver \ Desktop \ example.bat, l'argomento sarebbe uguale a C: \ Users \ Oliver \ Desktop \, inoltre è possibile utilizzare il comando set cpath=%~dp0 && set cpath=%cpath:~0,-1%e utilizzare la %cpath%variabile per rimuovere la barra finale.
%cd% ti darà il percorso della directory da cui è in esecuzione lo script.
Corri:
echo %cd%
%CD%è la cartella di lavoro corrente, non la cartella, in cui è archiviato il file batch. Possono essere nella stessa posizione, ma spesso non lo sono.
Questa sarebbe la %CD%variabile.
@echo off
echo %CD%
%CD% restituisce la directory corrente in cui si trova lo script batch.
CD C:\Temp <CR> ECHO %CD%( <CR>è newline ...)
Sto lavorando su una macchina Windows 7 e ho finito per usare le righe seguenti per ottenere il percorso della cartella assoluta per il mio script bash.
Sono arrivato a questa soluzione dopo aver visto http://www.linuxjournal.com/content/bash-parameter-expansion .
#Get the full aboslute filename.
filename=$0
#Remove everything after \. An extra \ seems to be necessary to escape something...
folder="${filename%\\*}"
#Echo...
echo $filename
echo $folder