Se si desidera che la directory in cui si è attualmente in, è possibile ottenere che da %cd%
. Questa è la tua attuale directory di lavoro.
Se avete intenzione di essere cambiare la directory di lavoro corrente durante l'esecuzione dello script, basta salvarlo alla partenza:
set startdir=%cd%
quindi è possibile utilizzare %startdir%
nel codice indipendentemente da eventuali modifiche in seguito on (che influisce su %cd%
).
Se si desidera ottenere l'ultimo componente di quel percorso (secondo il vostro commento), è possibile utilizzare il seguente come una linea di base:
@setlocal enableextensions enabledelayedexpansion
@echo off
set startdir=%cd%
set temp=%startdir%
set folder=
:loop
if not "x%temp:~-1%"=="x\" (
set folder=!temp:~-1!!folder!
set temp=!temp:~0,-1!
goto :loop
)
echo.startdir = %startdir%
echo.folder = %folder%
endlocal && set folder=%folder%
Questo uscite:
C:\Documents and Settings\Pax> testprog.cmd
startdir = C:\Documents and Settings\Pax
folder = Pax
Funziona copiando i caratteri dalla fine del percorso completo, uno alla volta, finché non trova il separatore \
. Non è né bella né efficiente, ma la programmazione in batch di Windows è raramente :-)
EDIT
In realtà, c'è un metodo semplice e molto efficiente per ottenere l'ultimo nome del componente.
for %%F in ("%cd%") do set "folder=%~nxF"
Non un problema per questa situazione, ma se si tratta di una variabile che contiene un percorso che può o non può terminare con \
, allora si può garantire il risultato corretto aggiungendo \.
for %%F in ("%pathVar%\.") do set "folder=%~nxF"
@Berming, ho aggiunto il codice che ti darà l'ultimo componente del percorso. Guarda l'aggiornamento. – paxdiablo
Proprio quello di cui avevo bisogno, grazie mille. Ho notato però che quando ho 'endlocal' dopo non posso accedere alla variabile' folder', quindi ho eliminato quella linea. Ho pensato che da quando ho rimosso quella linea, dovrei rimuovere anche la '@setlocal enableextensions enabledelayedexpansion' in alto, ma rimuovere quella linea ha causato problemi, quindi l'ho mantenuta. – Berming
@Berming, vedere l'aggiornamento. Se lasci fuori il 'endlocal', ciò ti influenzerà in seguito.Puoi _still_ usare 'setlocal/endlocal' per assicurarti che l'espansione ritardata funzioni ma modifica' endlocal' in 'endlocal && set folder =% folder%' in modo che la variabile 'folder' sfugga. – paxdiablo