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?

¿Fue útil?

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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top