Cambia la directory corrente nella directory dei file batch


18

Ho un batfile su Windows che esegue un'operazione procdump . Il problema con il file batch è che ho bisogno di cd nella directory del file batch prima di eseguire il lavoro, altrimenti lo script non funzionerà.

Come passare alla directory del file batch corrente?

Ho provato il seguente codice nel mio procdump.bat:

cd "%~dp"
procdump -h devenv.exe mydump.txt

Ma non è riuscito, il messaggio di errore è:

Il seguente utilizzo dell'operatore percorso nella sostituzione dei parametri batch non è valido:% ~ dp "

Per formati validi, digitare CALL /? o per /?

Modifica: la risposta fornita funziona, ma c'è solo un problema: se la mia directory corrente è diversa dalla directory del file batch, allora otterrei un "Il sistema non riesce a trovare il percorso specificato". Qualcuno ha qualche idea?


Da dove prendi quel "% ~ dp"?
fretje,

Risposte:


24

Ok, penso di aver trovato qui cosa intendi %~dp.

Penso che quello che vuoi davvero fare sia questo:

cd /D "%~dp0"

(!) Ma nota che questo non ti darà ancora il comportamento giusto quando stai provando ad eseguire il tuo batch mentre la directory corrente è su un'altra unità poiché cdnon cambia l'unità attiva.

Modifica : Apparentemente (grazie a @Yoopergeek ) puoi aggiungere il /Dparametro al cdcomando per permettergli di cambiare anche l'azionamento attivo.


Per ulteriori informazioni su questi parametri batch, consultare help callun cmdprompt.
In pausa fino a nuovo avviso.

A proposito, puoi combinare questi parametri in questo modo:%~dp0
In pausa fino a nuovo avviso.

La tua risposta è utile; ma se la mia directory corrente si trova in una directory diversa rispetto al file batch, allora il comando sopra fallirà; anche cd /Do cd "%~dp0" /Dnon può aiutare.
Graviton,

@Ngu Soon Hui: il fatto che la tua directory attuale si trovi in ​​una directory diversa da quella del file batch era evidente. Ma perché quel comando fallirebbe? L'ho provato qui e funziona.
fretje,

1
Ho trovato la soluzione usando cd /D "%~dp0". Grazie.
Graviton,

4

Lascerei un commento alla risposta di Fretje, ma evidentemente non posso ???


Comunque, per quanto riguarda la nota:
nota che questo non ti darà ancora il comportamento corretto quando stai provando a eseguire il batch mentre la directory corrente è su un'altra unità poiché cd non cambia l'unità attiva.


Utilizzare l' /Dopzione nel comando CD e il CD cambierà l'unità attiva.


... ma posso commentare la mia risposta. Amico, fa schifo di non avere un rappresentante su ServerFault ... vorrei che un rappresentante del SO 'sanguinasse' qui.
Yoopergeek,

1
@Yoopergeek: puoi associare i tuoi account. Questo ti darà 100 rappresentanti qui se il tuo rappresentante su SO è superiore a 200.
dal
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.