[BATCH] Script para "ordenar" un poco. V2.0

Iniciado por -- KiLiaN --, 12 Marzo 2012, 19:30 PM

0 Miembros y 1 Visitante están viendo este tema.

-- KiLiaN --

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 (Dos) [Seleccionar]
@echo off
:menu
cls
echo.
echo Autor: --KiLiaN-- (s) Salir.
echo.
echo.
echo OPCIONES:
echo.
echo 1- Quitar de los nombres de las carpetas esos molestos .avi, .mp3, etc..
echo.
echo 2- Sacar archivos de TODAS las carpetas afuera y del tiron, sin pensartelo..
echo.
echo 3- Volver ha meter los archivos en sus respectivas carpetas..(sino las crea).
echo.
echo 4- Elimina las carpetas vacias despues de sacar los archivos..
echo.


set /p option=Escoge chavalote/a:

if "%option%"=="1" goto :option1
if "%option%"=="2" goto :option2
if "%option%"=="3" goto :option3
if "%option%"=="4" goto :option4
if "%option%"=="s" goto :eof
goto:menu


:option1
for /D %%i in (*.avi) do (Echo "%%i" & ren "%%i" "%%~ni" & echo cambiado: "%%i")
for /D %%i in (*.mp3) do (Echo "%%i" & ren "%%i" "%%~ni" & echo cambiado: "%%i")
for /D %%i in (*.mp4) do (Echo "%%i" & ren "%%i" "%%~ni" & echo cambiado: "%%i")

rem Podeis añadir mas extensiones o cambiarlas aqui.
echo.
echo Proceso terminado, pulsa algun boton para volver al menu.. & pause>nul
goto:menu

:option2
For /R /D %%i in (*) do (pushd %%i & @move /Y *.* "%~dp0" & popd)
echo.
echo Proceso terminado, pulsa algun boton para volver al menu.. & pause>nul
goto:menu


:option3
For %%i in (*) do (
For /D %%e in (*) do (if "%%e"=="%%~ni" @move "%%i" "%%e" & echo "%%i"))
For %%i in (*.avi) do (if not exist "%%~ni" (mkdir "%%~ni" & @move /Y "%%i" "%%~ni") else

(@move /Y "%%i" "%%~ni"))
For %%i in (*.mp3) do (if not exist "%%~ni" (mkdir "%%~ni" & @move /Y "%%i" "%%~ni") else

(@move /Y "%%i" "%%~ni"))
For %%i in (*.mp4) do (if not exist "%%~ni" (mkdir "%%~ni" & @move /Y "%%i" "%%~ni") else

(@move /Y "%%i" "%%~ni"))

rem Si no existe la carpeta con el nombre de archivo la crea y luego mueve el archivo a la

carpeta creada. SOLO PARA .avi, .mp3 y .mp4.
echo.
echo Proceso terminado, pulsa algun boton para volver al menu.. & pause>nul
goto:menu

:option4
For /D /R %%i in (*) do (rd /Q "%%i">nul & echo Se ha eliminado "%%i")

rem El comando RD unicamente borra una carpeta si esta vacia.
echo.
echo Proceso terminado, pulsa algun boton para volver al menu.. & pause>nul
goto:menu

:EOF
exit


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 (dos) [Seleccionar]
@Echo off
cls
:: By -- KiLiaN --
color 02
Setlocal Enabledelayedexpansion

::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.

Set ext=.avi .mp3 .divx .mp4 .AVI .MP3 .Dvd-Rip .mpg .DVD

For %%# in (%ext%) do (
For %%i in (*) do (
For /D %%e in (*) do (if "%%e"=="%%~ni" @move "%%i" "%%e" & echo "%%i"))

For %%i in (*%%#) do (if not exist "%%~ni" (mkdir "%%~ni" & @move /Y "%%i" "%%~ni") else

(@move /Y "%%i" "%%~ni")))

For /D /R %%i in (*) do (@Rd /Q "%%i" 2>nul)
::rem El comando RD unicamente borra una carpeta si esta vacia.

Echo.
Echo Iniciando......OK.

::Quita de los nombres de las carpetas las extensiones.

For %%# in (%ext%) do (
For /D %%i in (*%%#) do (Echo "%%i" & ren "%%i" "%%~ni" & echo cambiado por: "%%~ni"))

Echo.
Echo.
Echo 10%%......OK.
ping -n 1 0.0.0.0>nul

::Aqui oculta todas las carpetas que tengan alguna parte con esta nomenclatura [1-] No limpia los nombres.

For /F "delims=*" %%i in ('Dir /B /A:D ^| Findstr /R \[1-') do (attrib +H "%%i")
Echo.
Echo 32%%......Ok.
ping -n 3 0.0.0.0>nul


::Cambia por espacios los (.,-[]) de los nombres de las carpetas que no tengan la nombenclatura [1-x-x] (que no esten ocultas).

For /F "delims=*" %%i in ('Dir /B /A:D') do (call:limpieza %%i)

Echo.
Echo 56%%......OK.
ping -n 2 0.0.0.0>nul

::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.

For /F "delims=*" %%i in ('Dir /B /A:H ^| Findstr /R \[1-') do (attrib -H "%%i")
Echo.
Echo 72%%......Ok.


::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.

For /F "delims=^" %%b in ('Dir /B /A:D *') do (
call:cuentaletras %%b
if !primeraletra!==a (ren "!String!" "A!newresto!" & echo. Cambiado !String! por A!newresto! & break)
if !primeraletra!==b (ren "!String!" "B!newresto!" & echo. Cambiado !String! por B!newresto! & break)
if !primeraletra!==c (ren "!String!" "C!newresto!" & echo. Cambiado !String! por C!newresto! & break)
if !primeraletra!==d (ren "!String!" "D!newresto!" & echo. Cambiado !String! por D!newresto! & break)
if !primeraletra!==e (ren "!String!" "E!newresto!" & echo. Cambiado !String! por E!newresto! & break)
if !primeraletra!==f (ren "!String!" "F!newresto!" & echo. Cambiado !String! por F!newresto! & break)
if !primeraletra!==g (ren "!String!" "G!newresto!" & echo. Cambiado !String! por G!newresto! & break)
if !primeraletra!==h (ren "!String!" "H!newresto!" & echo. Cambiado !String! por H!newresto! & break)
if !primeraletra!==i (ren "!String!" "I!newresto!" & echo. Cambiado !String! por I!newresto! & break)
if !primeraletra!==j (ren "!String!" "J!newresto!" & echo. Cambiado !String! por J!newresto! & break)
if !primeraletra!==k (ren "!String!" "L!newresto!" & echo. Cambiado !String! por K!newresto! & break)
if !primeraletra!==l (ren "!String!" "L!newresto!" & echo. Cambiado !String! por L!newresto! & break)
if !primeraletra!==m (ren "!String!" "M!newresto!" & echo. Cambiado !String! por M!newresto! & break)
if !primeraletra!==n (ren "!String!" "N!newresto!" & echo. Cambiado !String! por N!newresto! & break)
if !primeraletra!==ñ (ren "!String!" "Ñ!newresto!" & echo. Cambiado !String! por Ñ!newresto! & break)
if !primeraletra!==o (ren "!String!" "O!newresto!" & echo. Cambiado !String! por O!newresto! & break)
if !primeraletra!==p (ren "!String!" "P!newresto!" & echo. Cambiado !String! por P!newresto! & break)
if !primeraletra!==q (ren "!String!" "Q!newresto!" & echo. Cambiado !String! por Q!newresto! & break)
if !primeraletra!==r (ren "!String!" "R!newresto!" & echo. Cambiado !String! por R!newresto! & break)
if !primeraletra!==s (ren "!String!" "S!newresto!" & echo. Cambiado !String! por S!newresto! & break)
if !primeraletra!==t (ren "!String!" "T!newresto!" & echo. Cambiado !String! por T!newresto! & break)
if !primeraletra!==u (ren "!String!" "U!newresto!" & echo. Cambiado !String! por U!newresto! & break)
if !primeraletra!==v (ren "!String!" "V!newresto!" & echo. Cambiado !String! por V!newresto! & break)
if !primeraletra!==w (ren "!String!" "W!newresto!" & echo. Cambiado !String! por W!newresto! & break)
if !primeraletra!==x (ren "!String!" "X!newresto!" & echo. Cambiado !String! por X!newresto! & break)
if !primeraletra!==y (ren "!String!" "Y!newresto!" & echo. Cambiado !String! por Y!newresto! & break)
if !primeraletra!==z (ren "!String!" "Z!newresto!" & echo. Cambiado !String! por Z!newresto! & break)
)
Echo.
Echo 100%......Completado.

Exit /b

:cuentaletras
Set String=%*
Echo !String! >TemporalText.d
Echo.>>TemporalText.d
FindStr /O "^" TemporalText.d >Temporaltemp.dat
  Del /Q TemporalText.d >nul
For /F "skip=1 delims=: " %%e in (Temporaltemp.dat) do (set /a letra=%%e - 3 & Del /Q

Temporaltemp.dat 2>nul)

set letras=!letra!
set resto= !String:~1,%letras%!
set primeraletra=!String:~0,1!
set newresto=!resto:~1,%letras%!
goto:EOF

:limpieza
set string="%*"

set string=!string:,= !
set string=!string:.= !
set string=!string:-= !
set string=!string:+= !
set string=!string:  = !
set string=!string:  = !
Ren "%*" %string% 2>nul

goto:EOF
Entren al chat de elhacker.net
    
   

@kln13

Eleкtro

#1
Cita de: -- KiLiaN -- 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)

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 (dos) [Seleccionar]
@Echo OFF

REM Crea una lista de reproducción .M3U y randomiza el contenido.
REM By Elektro H@cker

Title %~n0
Mode con cols=50 lines=3
Setlocal enabledelayedexpansion

chcp 1252 >NUL

Echo+
Echo: Espere, Se esta randomizando la lista...

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")

Echo #EXTM3U>"%Temp%\Lista Winamp.m3u"
For /F "Tokens=2* Delims=;" %%$ in ('Type "%Temp%\Lista Winamp.tmp" ^| Sort ') do (Echo %%$>>"%Temp%\Lista Winamp.m3u")

Start /B C:"\Program Files (x86)\Winamp\winamp.exe" "%Temp%\Lista Winamp.m3u"

Exit


salu2








-- KiLiaN --

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 ;)
Entren al chat de elhacker.net
    
   

@kln13