Cómo consultar el nombre del directorio actual en una variable para archivos por lotes

Cómo consultar el nombre del directorio actual en una variable para archivos por lotes

He estado investigando e intentando sin éxito obtener el nombre del directorio actual en una variable, como por %CurrDirNam%ejemplo para crear un archivo de texto con el mismo nombre de carpeta. El tercer ejemplo a continuación funciona, sin embargo, cuando se ejecuta, sobrescribe el archivo existente y su contenido. entonces modifiqué la línea inferior para verificar la existencia del archivo. Establecer DirName=%cd% Para %%A en ("%dirname%") haga (Establecer nombre=%%~nxA) SI NO EXISTE %Name%.txt Echo %Dirname% > %DirName%\%Name%.txt Rem ---Uy, lo siento, no sé cómo volver a formatear el código con CRLF y sangrías. Soy nuevo en esto...

Respuesta1

Si ejecutas esto

Set DirName=%cd% 
Echo %Dirname% > %DirName%.txt

deC:\Temperatura, se expandirá a

Set DirName=C:\Temp 
Echo C:\Temp > C:\Temp.txt

Esto fallará si no tiene permisos de escritura en C:\ y explicaría elAcceso denegadomensaje que recibes.

Si desea crear un archivo en C:\Temp, use algo como esto:

Set DirName=%cd% 
Echo %Dirname% > %DirName%\test.txt

Si el nombre del archivo debe coincidir con el nombre del directorio, utilice este truco:

Set DirName=%cd%
For %%A in ("%dirname%") do (
    Set Name=%%~nxA
)
Echo %Dirname% > %DirName%\%Name%.txt

Respuesta2

Probé esto en mi sistema Windows 10 y funcionó sin problemas.

>path.txt echo %cd%

Ejecuté esto en un script por lotes mientras estaba en el directorio cuya ruta quería. En mi caso, solo quería la ruta para crear una URL a partir de ella. Descubrí que al usarla >url.txt echo %cd:\=/%también se encarga de todas las barras invertidas que debían ser barras diagonales en la URL y me ahorró el problema.

El único paso que queda es editar un poco el archivo url.txt.

información relacionada