¿Es posible obtener el nombre de la carpeta actual (no la ruta actual del directorio) utilizando un comando de DOS? ¿Si es así, cómo?
Lo más cercano que obtuve fue esto, pero no lo hace:
for /f "delims=\" %%a in ("%CD%") do set CURR=%%a
echo.DIR: %CURR%
nota: el intento anterior fue tratar de tokenizar la cadena y obtener el último token establecido como la variable CURR.
windows
command-line
batch
djangofan
fuente
fuente
cd | sed "s/.*\\//"
(que canaliza la salida de cd (CWD) en una búsqueda de expresiones regulares y reemplazar, sustituir todo antes de la final \ sin nada en absoluto)for /f
ni los de TomWij%~n*
son compatibles con MS-DOS. (Windows ' nocmd.exe
es DOS, es un programa nativo de Windows)Respuestas:
El camino más corto que he encontrado:
o dentro de un script .bat:
o en .bat con Obtener valor en variable.
Explicación: http://www.robvanderwoude.com/ntfor.php
nx significa solo nombre de archivo y extensión
fuente
%
con%%
..
), como mi carpeta% USERPROFILE%.*
antes ooSi desea conocer la ubicación actual del archivo por lotes (y si su Windows no es una versión muy antigua), escriba
for /?
en una ventana 'cuadro de DOS'. Desplácese hacia abajo. Leer.Descubrirá que ahora puede leer (desde dentro del archivo por lotes) estas variables:
Esto funciona para muchos casos. Supongamos que se llama al archivo por lotes
mytest.bat
. Puede llamarlo de diferentes maneras:..\..\to\mytest.bat
............................... (ruta relativa)d:\path\to\mytest.bat
........................... (ruta completa)\\fileserver\sharename\mytest.bat
... (ruta en el recurso compartido remoto)... y siempre obtendrás el valor correcto en tus variables.
fuente
%~dpnx0
, ¿no?Personalmente, me gustó la respuesta de Toms, hasta que luchó con puntos en los nombres de directorio. Esto me dio una pista:
fuente
La respuesta de Tom es buena, pero si tiene un nombre de directorio con un punto (es decir, wxwidgets-2.9.4) solo obtendrá el nombre completo. Entonces, esto generaría wxwidgets-2.9 en su lugar porque el .4 ha sido tratado como una extensión (¡Sí, a pesar de que es un nombre de directorio!).
Para obtener el nombre de salida completo, debe agregar la extensión hasta el final:
y en modo de archivo por lotes:
O, por supuesto, establezca una variable en el archivo por lotes:
fuente
Otra forma es:
funciona con "." y espacios en ruta
¿Qué hace?
poner todo el nombre de archivo (driveletter-path-filename-extension) en
MyPath
Vareliminar el nombre de archivo y la extensión de
MyPath
varTambién funciona con UNC Paths. Si necesita la barra invertida al final del camino. Elimine el
\
afterMyPath
en el segundo comando set, ej.fuente
%~dp0
Puede obtener el directorio actual en una variable. Un trazador de líneas:
Verifícalo con
fuente
así de simple
o
Tenga cuidado con la barra invertida del final del camino, no tiene que ser la barra invertida del final.
fuente
Mi respuesta en este hilo lo hace en 3 líneas simples:
fuente
Esto funciona para mí desde un archivo por lotes. Devuelve el nombre del directorio de trabajo actual.
fuente