Come modificare la directory di lavoro corrente utilizzando un file batch


110

Ho bisogno di aiuto per scrivere un file batch. Ho un percorso memorizzato in una radice variabile come segue:

set root=D:\Work\Root

Quindi sto cambiando la mia directory di lavoro in questa root come segue:

cd %root%

Quando eseguo questo file batch da qualsiasi punto dell'unità D, ciò viene eseguito correttamente. Ma quando eseguo lo stesso file batch da un'altra unità, cd% root% non funziona.

C'è un modo per ottenere la lettera di unità dalla variabile radice? Posso quindi cambiare prima la directory corrente su questa unità e quindi cd% root% funzionerà.

Risposte:


160

Specificare /Dper cambiare anche l'unità.

CD /D %root%

1
Altre risposte dicono \d(minuscolo) c'è una differenza tra entrambi? L'opzione non fa distinzione tra maiuscole e minuscole?
Josch

3
@josch: Sì, se stiamo parlando dei comandi interni di CMD, i parametri di commutazione come /Dsopra non fanno distinzione tra maiuscole e minuscole ( /D= /d), proprio come i comandi stessi ( CD= cd). Credo che ciò valga anche per tutte le utilità della riga di comando di Windows esterne (come FINDSTR, SORTecc.) Gli strumenti di terze parti, d'altra parte, possono utilizzare parametri con distinzione tra maiuscole e minuscole.
Andriy M

non vale una risposta, ma puoi set "root=/d D:\Work\Root"e cd %root%o anche set "root=cd /d D:\Work\Root"e solo%root%
Stephan

40

Basta usare cd /d %root%per cambiare le lettere del driver e cambiare directory.

In alternativa, utilizzare pushd %root%per cambiare le lettere di unità quando si cambiano le directory e per memorizzare la directory precedente su uno stack in modo da poter utilizzare popdper tornare indietro.

Tieni presente che pushdti consentirà anche di modificare le directory in una condivisione di rete. In realtà mapperà un'unità di rete per te, quindi annullerà la mappatura quando esegui il popdper quella directory.


29

Prova questo

chdir /d D:\Work\Root

Goditi il ​​tifo;)


6
Radicamento? Cosa significa questo in questo contesto?
Mathias Lykkegaard Lorenzen

Va notato che la directory prima e dopo "dovrebbe essere inserita in questo modo; chdir / d" D: \ Work \ Root "
Ad Infinitum

12

Potrebbe essere una sintassi più semplice

pushd% root%


3
Wow, di tutte le soluzioni la classifica più bassa è quella che in realtà ha funzionato a meraviglia! Grazie!
Arto Kalishian
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.