ver una subcarpetas rutas ruta relativas listar entrar cómo copiar contenido completa como carpetas carpeta archivos archivo acceso absolutas path cmd

path - una - Cómo obtener la ruta de la carpeta desde la ruta del archivo con CMD



rutas absolutas y relativas linux (6)

En caso de que alguien quiera un método alternativo ...

Si es el último subdirectorio en la ruta, puede usar este único trazo:

cd "c:/directory/subdirectory/filename.exe/../.." && dir /ad /b /s

Esto devolvería lo siguiente:

c:/directory/subdirectory

El .... vuelve al directorio anterior. / anuncio muestra solo directorios / b es un listado de formato desnudo / s incluye todos los subdirectorios. Esto se usa para obtener la ruta completa del directorio para imprimir.

Necesito una ruta a la carpeta que contiene el archivo cmd. Con% 0 puedo obtener el nombre del archivo. Pero, ¿cómo obtener el nombre de la carpeta?

c: / temp / test.cmd >> test.cmd

PD: ¡Mi directorio actual! = Carpeta del script.


En caso de que la respuesta aceptada por Wadih no haya funcionado para ti, prueba echo %CD%


La respuesta aceptada es útil, pero no es inmediatamente obvio cómo recuperar un nombre de archivo de una ruta si NO está utilizando valores pasados. Pude resolver esto desde este hilo, pero en caso de que otros no tengan tanta suerte, así es como se hace:

@echo off setlocal enabledelayedexpansion enableextensions set myPath=C:/Somewhere/Somewhere/SomeFile.txt call :file_name_from_path result !myPath! echo %result% goto :eof :file_name_from_path <resultVar> <pathVar> ( set "%~1=%~nx2" exit /b ) :eof endlocal

Ahora la función :file_name_from_path se puede usar en cualquier lugar para recuperar el valor, no solo para los argumentos pasados. Esto puede ser extremadamente útil si los argumentos se pueden pasar al archivo en un orden indeterminado o la ruta no se pasa al archivo en absoluto.


Para asignar estos a las variables, asegúrese de no agregar espacios al frente o después del signo igual:

set filepath=%~dp1 set filename=%~nx1

Entonces no deberías tener problemas.


Para el nombre y la unidad de la carpeta, puede usar:

echo %~dp0

Puedes obtener mucha más información usando diferentes modificadores:

%~I - expands %I removing any surrounding quotes (") %~fI - expands %I to a fully qualified path name %~dI - expands %I to a drive letter only %~pI - expands %I to a path only %~nI - expands %I to a file name only %~xI - expands %I to a file extension only %~sI - expanded path contains short names only %~aI - expands %I to file attributes of file %~tI - expands %I to date/time of file %~zI - expands %I to size of file The modifiers can be combined to get compound results: %~dpI - expands %I to a drive letter and path only %~nxI - expands %I to a file name and extension only %~fsI - expands %I to a full path name with short names only

Esta es una copia pegar de "for /?" comando en el prompt. Espero eso ayude.

Relacionado

Los 10 mejores consejos para lotes de DOS (Sí, DOS Batch ...) muestran batchparams.bat (enlace a la fuente como esencia):

C:/Temp>batchparams.bat c:/windows/notepad.exe %~1 = c:/windows/notepad.exe %~f1 = c:/WINDOWS/NOTEPAD.EXE %~d1 = c: %~p1 = /WINDOWS/ %~n1 = NOTEPAD %~x1 = .EXE %~s1 = c:/WINDOWS/NOTEPAD.EXE %~a1 = --a------ %~t1 = 08/25/2005 01:50 AM %~z1 = 17920 %~$PATHATH:1 = %~dp1 = c:/WINDOWS/ %~nx1 = NOTEPAD.EXE %~dp$PATH:1 = c:/WINDOWS/ %~ftza1 = --a------ 08/25/2005 01:50 AM 17920 c:/WINDOWS/NOTEPAD.EXE


Tuve el mismo problema en mi ciclo donde quería extraer archivos zip en el mismo directorio y luego eliminar el archivo zip. El problema era que 7z requiere la carpeta de salida, así que tuve que obtener la ruta de la carpeta de cada archivo. Aquí está mi solución:

FOR /F "usebackq tokens=1" %%i IN (`DIR /S/B *.zip` ) DO ( 7z.exe x %%i -aoa -o%%i/.. )

%% era una ruta de acceso de archivo completa y% ii / .. simplemente devuelve la carpeta principal.

Espero eso ayude.