elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [BATCH] Script para "ordenar" un poco. V2.0
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [BATCH] Script para "ordenar" un poco. V2.0  (Leído 5,845 veces)
-- KiLiaN --


Desconectado Desconectado

Mensajes: 1.163


Ju Já!!


Ver Perfil
[BATCH] Script para "ordenar" un poco. V2.0
« en: 12 Marzo 2012, 19:30 pm »

Tengo un disco duro con un monton de documentales y videos en general, los cuales quiero ver en la wii por la noche y dormirme con ellos (si me gusta dormir escuchando la somnifera voz de los tios de los documentales y ademas algo se retiene xD) pero hay un problema esos documentales no suelen durar mas de 45-50 minutos (en general) y claro yo queria que se fueran reproduciendo uno detras de otro pero aqui viene el problema cada archivo estaba metido en una carpeta con su mismo nombre (me los descargaba asi por descarga directa) y bueno era tarea de chinos sacar uno a uno los videos para poder verlos en la wii del tiron asique hice este script para que me automatizara esto un poco, se aceptan sugerencias, criticas, etc incluso insultos xD

Código
  1. @echo off
  2. :menu
  3. cls
  4. echo Autor: --KiLiaN-- (s) Salir.
  5. echo OPCIONES:
  6. echo 1- Quitar de los nombres de las carpetas esos molestos .avi, .mp3, etc..
  7. echo 2- Sacar archivos de TODAS las carpetas afuera y del tiron, sin pensartelo..
  8. echo 3- Volver ha meter los archivos en sus respectivas carpetas..(sino las crea).
  9. echo 4- Elimina las carpetas vacias despues de sacar los archivos..
  10.  
  11.  
  12. set /p option=Escoge chavalote/a:
  13.  
  14. if "%option%"=="1" goto :option1
  15. if "%option%"=="2" goto :option2
  16. if "%option%"=="3" goto :option3
  17. if "%option%"=="4" goto :option4
  18. if "%option%"=="s" goto :eof
  19. goto:menu
  20.  
  21.  
  22. :option1
  23. for /D %%i in (*.avi) do (Echo "%%i" & ren "%%i" "%%~ni" & echo cambiado: "%%i")
  24. for /D %%i in (*.mp3) do (Echo "%%i" & ren "%%i" "%%~ni" & echo cambiado: "%%i")
  25. for /D %%i in (*.mp4) do (Echo "%%i" & ren "%%i" "%%~ni" & echo cambiado: "%%i")
  26.  
  27. rem Podeis añadir mas extensiones o cambiarlas aqui.
  28. echo Proceso terminado, pulsa algun boton para volver al menu.. & pause>nul
  29. goto:menu
  30.  
  31. :option2
  32. For /R /D %%i in (*) do (pushd %%i & @move /Y *.* "%~dp0" & popd)
  33. echo Proceso terminado, pulsa algun boton para volver al menu.. & pause>nul
  34. goto:menu
  35.  
  36.  
  37. :option3
  38. For %%i in (*) do (
  39. For /D %%e in (*) do (if "%%e"=="%%~ni" @move "%%i" "%%e" & echo "%%i"))
  40. For %%i in (*.avi) do (if not exist "%%~ni" (mkdir "%%~ni" & @move /Y "%%i" "%%~ni") else
  41.  
  42. (@move /Y "%%i" "%%~ni"))
  43. For %%i in (*.mp3) do (if not exist "%%~ni" (mkdir "%%~ni" & @move /Y "%%i" "%%~ni") else
  44.  
  45. (@move /Y "%%i" "%%~ni"))
  46. For %%i in (*.mp4) do (if not exist "%%~ni" (mkdir "%%~ni" & @move /Y "%%i" "%%~ni") else
  47.  
  48. (@move /Y "%%i" "%%~ni"))
  49.  
  50. rem Si no existe la carpeta con el nombre de archivo la crea y luego mueve el archivo a la
  51.  
  52. carpeta creada. SOLO PARA .avi, .mp3 y .mp4.
  53. echo Proceso terminado, pulsa algun boton para volver al menu.. & pause>nul
  54. goto:menu
  55.  
  56. :option4
  57. For /D /R %%i in (*) do (rd /Q "%%i">nul & echo Se ha eliminado "%%i")
  58.  
  59. rem El comando RD unicamente borra una carpeta si esta vacia.
  60. echo Proceso terminado, pulsa algun boton para volver al menu.. & pause>nul
  61. goto:menu
  62.  
  63. :EOF
  64.  

Espero que a alguien le ayude el codigo ;) y perdon por el tocho contandoos mi vida xD



V2.0

He hecho algunas modificaciones en el script y lo he aligerado un poco, os lo dejo aqui para que podais comparar y ver las diferencias, ala un saludo xD

Código
  1. @Echo off
  2. cls
  3. :: By -- KiLiaN --
  4. color 02
  5. Setlocal Enabledelayedexpansion
  6.  
  7. ::Primero comprueba si ya existen carpetas con nombres de archivos y si existen mueven el archivo a su carpeta. Despues comprueba archivo por archivo si existe su carpeta y si no existe la crea para moverse a su interior. Luego borra las carpetas vacias.
  8.  
  9. Set ext=.avi .mp3 .divx .mp4 .AVI .MP3 .Dvd-Rip .mpg .DVD
  10.  
  11. For %%# in (%ext%) do (
  12. For %%i in (*) do (
  13. For /D %%e in (*) do (if "%%e"=="%%~ni" @move "%%i" "%%e" & echo "%%i"))
  14.  
  15. For %%i in (*%%#) do (if not exist "%%~ni" (mkdir "%%~ni" & @move /Y "%%i" "%%~ni") else
  16.  
  17. (@move /Y "%%i" "%%~ni")))
  18.  
  19. For /D /R %%i in (*) do (@Rd /Q "%%i" 2>nul)
  20. ::rem El comando RD unicamente borra una carpeta si esta vacia.
  21.  
  22. Echo Iniciando......OK.
  23.  
  24. ::Quita de los nombres de las carpetas las extensiones.
  25.  
  26. For %%# in (%ext%) do (
  27. For /D %%i in (*%%#) do (Echo "%%i" & ren "%%i" "%%~ni" & echo cambiado por: "%%~ni"))
  28.  
  29. Echo 10%%......OK.
  30. ping -n 1 0.0.0.0>nul
  31.  
  32. ::Aqui oculta todas las carpetas que tengan alguna parte con esta nomenclatura [1-] No limpia los nombres.
  33.  
  34. For /F "delims=*" %%i in ('Dir /B /A:D ^| Findstr /R \[1-') do (attrib +H "%%i")
  35. Echo 32%%......Ok.
  36. ping -n 3 0.0.0.0>nul
  37.  
  38.  
  39. ::Cambia por espacios los (.,-[]) de los nombres de las carpetas que no tengan la nombenclatura [1-x-x] (que no esten ocultas).
  40.  
  41. For /F "delims=*" %%i in ('Dir /B /A:D') do (call:limpieza %%i)
  42.  
  43. Echo 56%%......OK.
  44. ping -n 2 0.0.0.0>nul
  45.  
  46. ::Aqui restauramos los nombres de las carpetas que tengan alguna parte con esta nomenclatura [1- (las ocultas). Yo las dejo asi para poder cambiarlas a mano.
  47.  
  48. For /F "delims=*" %%i in ('Dir /B /A:H ^| Findstr /R \[1-') do (attrib -H "%%i")
  49. Echo 72%%......Ok.
  50.  
  51.  
  52. ::Pasa a mayusculas SOLO LA PRIMERA LETRA, para ello calcula cuando mide (en caracteres) el nombre y saca la primera letra y el resto del nombre, luego comprueba si la primera letra esta en minuscula, y dependiendo de cual sea la cambia por su mayuscula y la une al resto del nombre.
  53.  
  54. For /F "delims=^" %%b in ('Dir /B /A:D *') do (
  55. call:cuentaletras %%b
  56. if !primeraletra!==a (ren "!String!" "A!newresto!" & echo. Cambiado !String! por A!newresto! & break)
  57. if !primeraletra!==b (ren "!String!" "B!newresto!" & echo. Cambiado !String! por B!newresto! & break)
  58. if !primeraletra!==c (ren "!String!" "C!newresto!" & echo. Cambiado !String! por C!newresto! & break)
  59. if !primeraletra!==d (ren "!String!" "D!newresto!" & echo. Cambiado !String! por D!newresto! & break)
  60. if !primeraletra!==e (ren "!String!" "E!newresto!" & echo. Cambiado !String! por E!newresto! & break)
  61. if !primeraletra!==f (ren "!String!" "F!newresto!" & echo. Cambiado !String! por F!newresto! & break)
  62. if !primeraletra!==g (ren "!String!" "G!newresto!" & echo. Cambiado !String! por G!newresto! & break)
  63. if !primeraletra!==h (ren "!String!" "H!newresto!" & echo. Cambiado !String! por H!newresto! & break)
  64. if !primeraletra!==i (ren "!String!" "I!newresto!" & echo. Cambiado !String! por I!newresto! & break)
  65. if !primeraletra!==j (ren "!String!" "J!newresto!" & echo. Cambiado !String! por J!newresto! & break)
  66. if !primeraletra!==k (ren "!String!" "L!newresto!" & echo. Cambiado !String! por K!newresto! & break)
  67. if !primeraletra!==l (ren "!String!" "L!newresto!" & echo. Cambiado !String! por L!newresto! & break)
  68. if !primeraletra!==m (ren "!String!" "M!newresto!" & echo. Cambiado !String! por M!newresto! & break)
  69. if !primeraletra!==n (ren "!String!" "N!newresto!" & echo. Cambiado !String! por N!newresto! & break)
  70. if !primeraletra!==ñ (ren "!String!" "Ñ!newresto!" & echo. Cambiado !String! por Ñ!newresto! & break)
  71. if !primeraletra!==o (ren "!String!" "O!newresto!" & echo. Cambiado !String! por O!newresto! & break)
  72. if !primeraletra!==p (ren "!String!" "P!newresto!" & echo. Cambiado !String! por P!newresto! & break)
  73. if !primeraletra!==q (ren "!String!" "Q!newresto!" & echo. Cambiado !String! por Q!newresto! & break)
  74. if !primeraletra!==r (ren "!String!" "R!newresto!" & echo. Cambiado !String! por R!newresto! & break)
  75. if !primeraletra!==s (ren "!String!" "S!newresto!" & echo. Cambiado !String! por S!newresto! & break)
  76. if !primeraletra!==t (ren "!String!" "T!newresto!" & echo. Cambiado !String! por T!newresto! & break)
  77. if !primeraletra!==u (ren "!String!" "U!newresto!" & echo. Cambiado !String! por U!newresto! & break)
  78. if !primeraletra!==v (ren "!String!" "V!newresto!" & echo. Cambiado !String! por V!newresto! & break)
  79. if !primeraletra!==w (ren "!String!" "W!newresto!" & echo. Cambiado !String! por W!newresto! & break)
  80. if !primeraletra!==x (ren "!String!" "X!newresto!" & echo. Cambiado !String! por X!newresto! & break)
  81. if !primeraletra!==y (ren "!String!" "Y!newresto!" & echo. Cambiado !String! por Y!newresto! & break)
  82. if !primeraletra!==z (ren "!String!" "Z!newresto!" & echo. Cambiado !String! por Z!newresto! & break)
  83. )
  84. Echo 100%......Completado.
  85.  
  86. Exit /b
  87.  
  88. :cuentaletras
  89. Set String=%*
  90. Echo !String! >TemporalText.d
  91. Echo.>>TemporalText.d
  92. FindStr /O "^" TemporalText.d >Temporaltemp.dat
  93.   Del /Q TemporalText.d >nul
  94. For /F "skip=1 delims=: " %%e in (Temporaltemp.dat) do (set /a letra=%%e - 3 & Del /Q
  95.  
  96. Temporaltemp.dat 2>nul)
  97.  
  98. set letras=!letra!
  99. set resto= !String:~1,% style="color: #448888;">letras%!
  100. set primeraletra=!String:~0,1!
  101. set newresto=!resto:~1,% style="color: #448888;">letras%!
  102. goto:EOF
  103.  
  104. :limpieza
  105. set string="%*"
  106.  
  107. set string=!string:,= !
  108. set string=!string:.= !
  109. set string=!string:-= !
  110. set string=!string:+= !
  111. set string=!string:  = !
  112. set string=!string:  = !
  113. Ren "%*" %string% 2>nul
  114.  
  115. goto:EOF
  116.  


« Última modificación: 7 Mayo 2012, 17:07 pm por -- KiLiaN -- » En línea

Eleкtro
Ex-Staff
*
Conectado Conectado

Mensajes: 9.878



Ver Perfil
Re: Script en Batch para "ordenar" un poco.
« Respuesta #1 en: 12 Marzo 2012, 22:42 pm »

Tengo un disco duro con un monton de documentales y videos en general, los cuales quiero ver en la wii por la noche y dormirme con ellos (si me gusta dormir escuchando la somnifera voz de los tios de los documentales y ademas algo se retiene xD)


pero hay un problema esos documentales no suelen durar mas de 45-50 minutos (en general)

Hostia que bueno xD, La verdad es que es relajante yo muxas veces he dormido de la misma manera xD

Y la WII no soporta listas de reproducción? (Me refiero por ejemplo al formato .m3u, .pls, o .wpl del mediaplayer) Porque entonces sería mucho más fácil la tarea...

saludos

EDITO: Te dejo un ejemplo que hice para mi reproductor...
El bat lo ejecutas desde la carpeta donde estan todas las carpetas de documentales, (Obviamente primero le añades las extensiones de videos y lo modificas a tu gusto)...
Quizás te sirva jeje

Reproducir TODO.bat

Código
  1. @Echo OFF
  2.  
  3. REM Crea una lista de reproducción .M3U y randomiza el contenido.
  4. REM By Elektro H@cker
  5.  
  6. Title %~n0
  7. Mode con cols=50 lines=3
  8. Setlocal enabledelayedexpansion
  9.  
  10. chcp 1252 >NUL
  11.  
  12. Echo: Espere, Se esta randomizando la lista...
  13.  
  14. For /F "Tokens=*" %%$ in ('Dir /B /S "%~dp0" ^| Findstr /R ".aif .flac .m4a .mid .mp3 .ogg .wav .wma"') do (Echo !Random!!Random!!Random!;%%$>>"%Temp%\Lista Winamp.tmp")
  15.  
  16. Echo #EXTM3U>"%Temp%\Lista Winamp.m3u"
  17. For /F "Tokens=2* Delims=;" %%$ in ('Type "%Temp%\Lista Winamp.tmp" ^| Sort ') do (Echo %%$>>"%Temp%\Lista Winamp.m3u")
  18.  
  19. Start /B C:"\Program Files (x86)\Winamp\winamp.exe" "%Temp%\Lista Winamp.m3u"
  20.  

salu2


« Última modificación: 12 Marzo 2012, 22:52 pm por EleKtro H@cker » En línea



-- KiLiaN --


Desconectado Desconectado

Mensajes: 1.163


Ju Já!!


Ver Perfil
Re: Script en Batch para "ordenar" un poco.
« Respuesta #2 en: 12 Marzo 2012, 23:02 pm »

Dios..me acabo de fijar en las especificaciones del programa que uso en la wii para reproducir (Wiimc porsi lo quiere saber alguien) y si que acepta listas de reproduccion asique gracias por tu codigo tio me va a vernir perita tambien ;)
En línea

-- KiLiaN --


Desconectado Desconectado

Mensajes: 1.163


Ju Já!!


Ver Perfil
Re: [BATCH] Script para "ordenar" un poco. V2.0
« Respuesta #3 en: 7 Mayo 2012, 17:11 pm »

Up!  :silbar:
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[BATCH] peticion de script ,leer , ordenar, exportar a otro txt
Scripting
apuromafo CLS 7 6,247 Último mensaje 15 Julio 2012, 04:02 am
por apuromafo CLS
Ordenar musica con batch programado
Scripting
itzg3 0 1,820 Último mensaje 5 Mayo 2014, 04:41 am
por itzg3
A la hora de ordenar mi "Biblioteca Digital"
Dudas Generales
Orb 2 2,476 Último mensaje 19 Mayo 2015, 10:04 am
por Sr_Malweriks
Mostrar poco a poco la salida del comando "find"
GNU/Linux
viher 2 3,037 Último mensaje 6 Enero 2016, 18:19 pm
por viher
Como? Script para ordenar últimos archivos actualizados - Linux
Scripting
walewein 0 2,830 Último mensaje 28 Septiembre 2018, 20:17 pm
por walewein
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines