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?
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?
Risposte:
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).
È possibile impostare una variabile batch / ambiente come segue:
SET var=%cd%
ECHO %var%
screenshot di esempio da un cmd.exe di Windows 7 x64.

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

SET var = %cd%mettere il valore nella variabile var<space>non in var. Dovresti evitare spazi nel comando SET
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.
Su Unix?
pwd
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
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.
%cd%
Su Windows:
CHDIR Visualizza il nome o modifica la directory corrente.
In Linux:
PWD Visualizza il nome della directory corrente.
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.
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.
@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.
tokens=*correzioni.
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.
Su Windows, digitare cd il percorso corrente funzionante.
Su Linux, pwdper l'attuale percorso di lavoro.