So che %0
contiene il percorso completo dello script batch, ad esc:\path\to\my\file\abc.bat
Vorrei path
essere uguale ac:\path\to\my\file
Come potrei farlo?
So che %0
contiene il percorso completo dello script batch, ad esc:\path\to\my\file\abc.bat
Vorrei path
essere uguale ac:\path\to\my\file
Come potrei farlo?
Risposte:
%~dp0
sarà la directory. Ecco della documentazione su tutti i modificatori di percorso . Cose divertenti :-)
Per rimuovere la barra rovesciata finale, è possibile utilizzare la :n,m
sintassi della sottostringa, in questo modo:
SET mypath=%~dp0
echo %mypath:~0,-1%
Sfortunatamente, non credo che ci sia un modo per combinare la %0
sintassi con la :~n,m
sintassi.
%~0\..
- sapevo che doveva esserci un modo migliore! Inoltre, probabilmente vorrai racchiuderlo %~dp0
tra virgolette doppie ( ""
) nel caso in cui ci siano spazi nel nome della directory, ecc.
%~dp0
contiene il simbolo `` alla fine. Hai idea di come rimuoverlo?
SET msg=hello world
funziona benissimo). Tuttavia, quando usi% mypath% altrove, devi fare attenzione a usarlo tra virgolette, anche se non sono necessari per cd
nessuno dei due.
È possibile utilizzare il seguente script per ottenere il percorso senza trascinare "\"
for %%i in ("%~dp0.") do SET "mypath=%%~fi"
%~dp0
può essere un percorso relativo. Per convertirlo in un percorso completo, prova qualcosa del genere:
pushd %~dp0
set script_dir=%CD%
popd
%~dp0
direttamente?
%~dp0
può essere relativo, il che può essere o meno un problema a seconda del caso d'uso
%~dp0
non può contenere un percorso relativo, d
sta per drive e p
per path, come può essere relativo un drive?
%~dp0
sarà 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