Cómo hacer que el archivo de salida es igual a la carpeta el nombre
-
23-08-2019 - |
Pregunta
He creado un archivo por lotes para la producción de un contenido de la carpeta en una lista de nombres.
@echo off
cd /d %1
Title %~f1
dir %1 /b /l > %1\..\file_list.txt
¿Cómo puedo hacer que el file_list.txt ser "dir nombre de" .txt?
Por ejemplo, yo estoy en la carpeta ABC y quiero dar salida a la lista de directorio para que el archivo de texto final será nombrado en lugar de abc.txt file_list.txt
Editar: Gracias Alconja, funciona perfectamente. Dado que este es un sitio de información y el aprendizaje, ¿le importaría expandiendo su respuesta a explicar los parámetros que se agregan?
Solución
Sobre la base de la discusión aquí , creo que esto es lo lo que busca es:
@echo off&setlocal enableextensions
Title %~f1
for %%* in (%1) do set MyDir=%%~n*
dir %1 /b /l > %1\..\"%MyDir%.txt"
endlocal&goto :eof
Nos dio una prueba rápida y parece hacer lo que quiera
... siempre como es / no hay garantías / etc:)
Otros consejos
No creo que hay una manera fácil de obtener sólo la última parte del recorrido de la corriente en tan sólo secuencias de comandos por lotes.
Sin embargo, si usted tiene SED en su máquina, se hace relativamente fácil:
@echo off
cd /d %1
Title %~f1
for /F "usebackq delims=" %%i in (`"pwd | sed -e ""{s/.*\\//g}"""`) do dir %1 /b /l > %1\..\%%i.txt
Corrección: respuesta de Alconja es correcta. Al parecer, con las extensiones de secuencias de comandos por lotes, esto es posible. (Ahora entiendo la f ~ también). Por lo tanto, no es necesario SED más, y esto se reduce a:
@echo off
cd /d %1
Title %~f1
for /F "usebackq delims=" %%i in (`pwd`) do dir %1 /b /l > %1\..\%%~ni.txt
Podría decirse, ya que cambia de directorio, que no es necesario el 1% en la ruta de salida o el comando dir, y sólo debe ser capaz de sustituir% 1 para el camino, para que pueda probar (no probado):
@echo off
cd /d %1
Title %~f1
dir /b /l > ..\%~n1.txt