Comando shell di Windows per ottenere il percorso completo della directory corrente?


223

Esiste un comando da riga di comando di Windows che posso utilizzare per ottenere il percorso completo della directory di lavoro corrente?

Inoltre, come posso memorizzare questo percorso all'interno di una variabile utilizzata in un file batch?


find / dir / to / start / from -type f -ls Questo formato indica la data in numerica find / dir / to / start / from -type f -exec ls -l --time-style = "+% Y% m% e% H:% M "{} \;

dai un'occhiata a questa risposta stackoverflow.com/a/52301748/2704032
Vishrant

Risposte:


356

Utilizzare cdsenza argomenti se si utilizza direttamente la shell o %cd%se si desidera utilizzarla in un file batch (si comporta come una variabile di ambiente).


11
Come hai fatto a capire che cosa stava cercando di dire da che ? E, sotto dos e windows cmd, di solito è solo "cd"
Rook

10
Onestamente, non riuscivo a pensare a nient'altro che avrebbero potuto provare a porre come indicato nella domanda.
Trevor Bramble

1
Posso memorizzare questo percorso all'interno di una variabile in un file .bat?
user62958

@unknown - potresti essere meglio descrivendo il problema originale in primo luogo.
Rook

100

È possibile impostare una variabile batch / ambiente come segue:

SET var=%cd%
ECHO %var%

screenshot di esempio da un cmd.exe di Windows 7 x64.

inserisci qui la descrizione dell'immagine

Aggiornamento: se si esegue unSET var = %cd%invece diSET var=%cd%, di seguito è quello che succede. Grazie a Jeb.

inserisci qui la descrizione dell'immagine

Catturare la directory corrente da un file batch


2
Secondo la domanda, questa risposta dovrebbe effettivamente essere quella accettata.
René Nyffenegger il

7
Ma non funziona, come SET var = %cd%mettere il valore nella variabile var<space>non in var. Dovresti evitare spazi nel comando SET
jeb

1
Secondo la domanda, questa risposta dovrebbe effettivamente essere quella accettata.
Shridutt Kothari,

51

Cita la guida di Windows per il setcomando ( set /?):

Se le estensioni di comando sono abilitate, ci sono diverse dinamiche
variabili di ambiente che possono essere espanse ma che non vengono visualizzate
l'elenco delle variabili visualizzate da SET. Questi valori variabili sono
calcolato dinamicamente ogni volta che il valore della variabile viene espanso.
Se l'utente definisce esplicitamente una variabile con uno di questi nomi, allora
tale definizione sostituirà quella dinamica descritta di seguito:

% CD%: si espande nella stringa di directory corrente.

% DATE%: si espande alla data corrente utilizzando lo stesso formato del comando DATE.

% TIME%: si espande all'ora corrente utilizzando lo stesso formato del comando TIME.

% RANDOM%: si espande in un numero decimale casuale compreso tra 0 e 32767.

% ERRORLEVEL%: si espande al valore ERRORLEVEL corrente

% CMDEXTVERSION%: si espande alle estensioni correnti del processore di comando
    numero della versione.

% CMDCMDLINE%: si espande alla riga di comando originale che ha invocato il file
    Processore di comando.

Nota la %CD% - expands to the current directory string.parte.


26

Su Unix?

pwd


2
Inizialmente OP ha richiesto un "comando" e non ha specificato il sistema operativo. Il sistema operativo è stato ora specificato, quindi questa risposta non è più pertinente.
Tisch,

18

Per Windows possiamo usare

cd

e per Linux

pwd

il comando è lì.


17

Questo ha sempre funzionato per me:

SET CurrentDir="%~dp0"

ECHO The current file path this bat file is executing in is the following:

ECHO %CurrentDir%

Pause

2
Questo fa la cosa sbagliata: trova il percorso dello script batch, non la directory corrente.
Harry Johnston,

2
È stato votato a causa della risposta alla domanda del PO ... e dandomi la soluzione esatta che stavo cercando. Grazie!
A-Diddy,

Bella presa. La directory corrente potrebbe fare riferimento al comando che chiama il file invece della posizione del file stesso.
Tam Le

9

Per Windows, cdda solo ti mostrerà la directory di lavoro corrente.

Per i sistemi UNIX e workalike, pwdeseguirà la stessa attività. Puoi anche usare la $PWDvariabile shell sotto alcune shell. Non sono sicuro se Windows supporti il ​​recupero della directory di lavoro corrente tramite una variabile shell o meno.


Non riesco comunque a capire perché abbia bisogno di "cd" per vedere la sua directory attuale. Per impostazione predefinita, è visibile come giorno. E se lo ha cambiato, allora sicuramente sa cosa fa "cd".
Rook

molto vecchio, ma solo per completezza: sì, Windows ha una variante per questo. Si chiama (indovina ...)%cd%
Stephan,

8

Su Windows:

CHDIR Visualizza il nome o modifica la directory corrente.

In Linux:

PWD Visualizza il nome della directory corrente.


5

Sulla base della domanda di follow-up (memorizzare i dati in una variabile) nei commenti al post chdir sto scommettendo che vuole memorizzare il percorso corrente per ripristinarlo dopo aver cambiato directory.

L'utente originale dovrebbe guardare "pushd", che cambia directory e inserisce quello corrente su uno stack che può essere ripristinato con un "popd". Su qualsiasi moderna shell cmd di Windows che è la strada da percorrere quando si creano file batch.

Se hai davvero bisogno di afferrare il percorso corrente, le moderne shell cmd hanno anche una variabile% CD% che puoi facilmente riporre in un'altra variabile come riferimento.


5

Crea un .batfile sotto System32, chiamiamolo copypath.batil comando per copiare il percorso corrente potrebbe essere :

echo %cd% | clip

Spiegazione:

%cd% ti darà il percorso attuale

CLIP

Description:
    Redirects output of command line tools to the Windows clipboard.
    This text output can then be pasted into other programs.

Parameter List:
    /?                  Displays this help message.

Examples:
    DIR | CLIP          Places a copy of the current directory
                        listing into the Windows clipboard.

    CLIP < README.TXT   Places a copy of the text from readme.txt
                        on to the Windows clipboard.

Ora copyclipè disponibile ovunque.


3
@echo off
for /f "usebackq tokens=*" %%x in (`chdir`) do set var=%%x
echo The currenct directory is: %var%

Ma, naturalmente , la risposta di gmaran23 è molto più semplice.


La sua risposta è migliore per definizione perché la tua risposta è sbagliata. Non funziona per percorsi con spazi.
Garric,

L'aggiunta di tokens=*correzioni.
René Nyffenegger,

2

In un prompt dei comandi di Windows, chdiro cdstamperà il percorso completo della directory di lavoro corrente nella console.

Se vogliamo copiare il percorso allora possiamo usare: cd | clip.


0

Su Windows, digitare cd il percorso corrente funzionante.

Su Linux, pwdper l'attuale percorso di lavoro.


5
Ci sono già 10 risposte con la stessa soluzione, ma più spiegazioni
jeb

0

Come uno dei possibili codici

    echo off
    for /f "usebackq tokens=* delims= " %%x in (`chdir`) do set var=%var% %%x
    echo The current directory is: "%var:~1%"
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.