Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Tomas1982 en 5 Agosto 2016, 20:54 pm



Título: como obtener nombres de ficheros de una unidad de disco
Publicado por: Tomas1982 en 5 Agosto 2016, 20:54 pm
Hello y gracias ante todo: Estoy tratando con un (bat) de obtener los ficheros de una unidad de disco, lo logre con un for pero la cuestión es cuando lo guardo en un txt  me sale con el camino completo en donde se encuentra el fichero y lo que necesito es solamente el nombre con la extensión. gracias.... 


Título: Re: como obtener nombres de ficheros de una unidad de disco
Publicado por: Eleкtro en 5 Agosto 2016, 22:48 pm
  • Tutorial extendido de aprendizaje Batch - por Elektro
        6.1 Variables de For (http://foro.elhacker.net/scripting/tema_bloqueado_hasta_finalizar_el_tuto_tutorial_extendido_de_aprendizaje_batch-t375135.0.html;msg1797955#msg1797955)

Saludos


Título: Re: como obtener nombres de ficheros de una unidad de disco
Publicado por: tincopasan en 5 Agosto 2016, 23:15 pm
Elektro, realmente admiro tu uso de batch, pero sigo sin entender porque lo siguen usando, prefiero en todo caso vbscript o hasta powershell.


Título: Re: como obtener nombres de ficheros de una unidad de disco
Publicado por: Eleкtro en 5 Agosto 2016, 23:20 pm
Elektro, realmente admiro tu uso de batch, pero sigo sin entender porque lo siguen usando, prefiero en todo caso vbscript o hasta powershell.

Yo sólo lo utilizo para ayudar a los demás en el foro! (aunque hay que reconocer que Batch sirve muy bien para automatizar tareas muy básicas sin la necesidad de depender de herramientas externas a los componentes por defecto que incorpora Windows)

Es innegable que vbscript y powershell son mejores y más útiles en todos los sentidos.

PD: Gracias por el cumplido

Saludos!


Título: Re: como obtener nombres de ficheros de una unidad de disco
Publicado por: Tomas1982 en 5 Agosto 2016, 23:43 pm
Mi hermano muchas gracias por el material que me distes ya solucione el problema... ;-)


Título: Re: como obtener nombres de ficheros de una unidad de disco
Publicado por: Eleкtro en 5 Agosto 2016, 23:48 pm
Mi hermano muchas gracias por el material que me distes ya solucione el problema... ;-)

Me alegro, en ese tuto explico algo mal las cosas xD pero aún así lo conseguiste,
te habrás dado cuenta que para imprimir el nombre y la extensión del archivo sólo tenías que combinar los modificadores de variable de For: Echo %%~nx#

Saludos


Título: Re: como obtener nombres de ficheros de una unidad de disco
Publicado por: Tomas1982 en 6 Agosto 2016, 00:31 am
Gracias nuevamente: la Cuestión es que estoy tratando de hacer un organizador de ficheros, primero busco en un directorio las posibles extensiones que pudieran existir y lo guardo en un txt, luego con otro (for) quito las repeticiones de una misma extensión quedándome con una de cada tipo, seguidamente cargo en una variable las extensiones del txt pasándoselas  a un (move)  el cual me genera una carpeta por cada extensión con sus respectivos ficheros.    Ya tengo el código casi terminado y muchas gracias nuevamente lo que me diste me servio de mucho...


Título: Re: como obtener nombres de ficheros de una unidad de disco
Publicado por: Tomas1982 en 8 Agosto 2016, 22:14 pm
Este es el script. Estoy tratando de mejorarlo, si alguien me pudiera dar una idea me ayudaría mucho. Saludos... :rolleyes:

Código
  1. @echo off
  2. for /R C:\Users\Work\Downloads %%a in (*) do (
  3. Echo %%~xa
  4. set ext2=%%~xa,
  5. echo %%~xa, >> Tmp.txt
  6. )
  7. set /a x=1
  8. for /f "tokens=1 delims=" %%a in (Tmp.txt) do (
  9. echo %%a > %%a.test
  10. )
  11. for /f "tokens=* delims= " %%a in ('dir /B "*.test"') do (
  12. echo %%a>>semifinish.txt
  13. )
  14. for /f "tokens=1 delims=." %%a in (semifinish.txt) do (
  15. echo %%a >>Lista.txt
  16. )
  17. for /f "tokens=* delims= " %%a in ('dir /B "*.test"') do (
  18. del "%%a"
  19. del semifinish.txt
  20. )
  21. MD "%~dp0\RECYCLE.BIN\Resultado\"
  22. for /F %%u in (lista.txt) do (
  23. for %%i in (C) do (
  24. for %%e in (%%u) do (
  25. for /f "tokens=*" %%a in ('dir /b /s "%%i:\Users\Work\Downloads\*.%%e"') do (if %~d0==%%i: Goto salir else do (
  26. xcopy /I /Y "%%a" "%~dp0\RECYCLE.BIN\Resultado\%%e\"  
  27. )
  28. )
  29. )
  30. )
  31. exit
  32.