Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: ovichan en 29 Diciembre 2011, 19:01 pm



Título: Mostrar listado de carpeta, eliminando su path
Publicado por: ovichan en 29 Diciembre 2011, 19:01 pm
Bueno el hecho es que estoy intentando listar todas las carpetas en donde tengo una discografia de musica. Todo va bien con este comando

Código:
@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


Título: Re: Mostrar listado de carpeta, eliminando su path
Publicado por: Eleкtro en 29 Diciembre 2011, 23:00 pm
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ódigo:
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?
Código:
carpeta 1\subcarpeta 1
carpeta 1\subcarpeta 2

carpeta 2\subcarpeta 1
carpeta 2\subcarpeta 2

De ser así...

Código
  1. @echo off
  2. Color 0A
  3. Title Listar archivos carpetas
  4.  
  5. For /F "tokens=*" %%_ in ('Dir /B /S /AD "%CD%"') do (Call :Rename "%%_")
  6.  
  7. Echo %~p1 >> "lista de titulos.txt"
  8. 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:
Código:
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

Código
  1. @echo off
  2. Color 0A
  3. Title Listar archivos carpetas
  4.  
  5. For /F "tokens=*" %%_ in ('Dir /B /S /AD "%CD%"') do (Call :Rename "%%_")
  6.  
  7. Set Path=%~p1
  8. Set PATH=%PATH:~10%
  9. Echo %PATH%>>"lista de titulos.txt"
  10. Goto :EOF


Título: Re: Mostrar listado de carpeta, eliminando su path
Publicado por: ovichan en 29 Diciembre 2011, 23:46 pm
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.