Bueno el hecho es que estoy intentando listar todas las carpetas en donde tengo una discografia de musica. Todo va bien con este comando
@echo off
color 0A
title Listar archivos carpetas
cd "path"
dir /s /b /a:d >"lista de titulos.txt"
pause>nul
Sin embargo en el txt aparece el path de cada carpeta de donde esta ubicada en windows, y me gustaria que se filtrara para que solo aparecieran el nombre de las carpetas y subcarpetas. Habia pensado en la posibilidad de abrir desde el bat el txt, al terminar el listado, buscar el string del path y sustituirlo por echo. o vacio. Pero a esto ya no llego con este lenguaje ^^
Gracias de antemano, y saludos
Hola
EDITO:
Te vendría bien leerte esto:
http://ss64.com/nt/syntax-args.html (http://ss64.com/nt/syntax-args.html)
Supongamos que esta es la ruta:
C:\Musica\discografia\carpeta 1\subcarpeta 1
C:\Musica\discografia\carpeta 1\subcarpeta 2
C:\Musica\discografia\carpeta 2\subcarpeta 1
C:\Musica\discografia\carpeta 2\subcarpeta 2
Así es como quieres que se muestre?
carpeta 1\subcarpeta 1
carpeta 1\subcarpeta 2
carpeta 2\subcarpeta 1
carpeta 2\subcarpeta 2
De ser así...
@echo off
Color 0A
Title Listar archivos carpetas
For /F "tokens=*" %%_ in ('Dir /B /S /AD "%CD%"') do (Call :Rename "%%_")
Pause
Exit
:Rename
Echo %~p1 >> "lista de titulos.txt"
goto :EOF
Si no te convence, aqui te hago otro, solo tienes que AJUSTAR el número de esta variable "Set PATH=%PATH:~10%"
Ejemplo:
Si la ruta es:
123456789\discografia\carpeta 1
Y uso "Set PATH=%PATH:~10%", La variable Corta los 10 primeros dígitos, y quedaría así:
discografia\carpeta 1
@echo off
Color 0A
Title Listar archivos carpetas
For /F "tokens=*" %%_ in ('Dir /B /S /AD "%CD%"') do (Call :Rename "%%_")
Pause
Exit
:Rename
Set Path=%~p1
Set PATH=%PATH:~10%
Echo %PATH%>>"lista de titulos.txt"
Goto :EOF
Eres un crack, eso es lo que buscaba, aunque no entiendo mucho lo de tokens. Con respecto al link, los comandos que lei eran iguales que en el manual de bat avanzado de la web, pero no sabia como aplicarlo. Saludos y gracias.