Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - -- KiLiaN --

#901
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 ;)
#902
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
#903
Scripting / Re: renombrar archivos bat
12 Marzo 2012, 18:35 PM
CitarPues yo no entiendo esto:

%%~ni
Eso son los modificadores de archivos, mira te dejo una lista, en el ejemplo que has puesto se llama %%~ni porque la variable de la que quiero el nombre de archivo es %%i.
   
       %~f1        - regresa la ruta y el archivo de %1.
       %~d1        - regresa la letra de la unidad de %1.
       %~p1        - regresa solo la ruta del archivo %1.
       %~n1        - regresa solo el nombre de archivo %1.
       %~x1        - regresa solo la extension del archivo %1.
       %~s1        - regresa solo la ruta, con directorios, con nombres cortos del archivo %1.
       %~a1        - regresa los atributos del archivo.
       %~t1        - regresa la hora/fecha del archivo %1
       %~z1        - regresa el tamaño del archivo %1.

Espero que te ayude, te dejo este post con mas info: http://foro.elhacker.net/scripting/programacion_batch_avanzada_nuevo-t132924.0.html
#904
Scripting / Re: renombrar archivos bat
12 Marzo 2012, 15:28 PM
Gracias tio me sirvio ;) a ver si me he enterado bien: esto lo que haces es cambiar las variables en el momento de la ejecucion en vez de cuando esta leyendo el script por ejemplo el ejemplo que me has dejado tu en el enlace:

Setlocal EnableDelayedExpansion
Set _var=first
Set _var=second& Echo %_var% !_var!


La linea que esta en negrita primero se "lee" o se analiza por el interprete de comandos y a la hora de ejecutarla cambia o expande la variable a su segundo valor. Las exclamaciones (!!) se usan para darle el valor expandido a la variable.
Ves ahora entiendo totalmente ejemplo ;) y ya se porque se porque a mi se me veia vacia xD de nuevo gracias.
#905
Scripting / Re: renombrar archivos bat
12 Marzo 2012, 14:55 PM
Se me olvido decirtelo, ya expandi como tu decias. He modificado el post anterior cuando tu me estabas respondiendo (perdon por tardar xD) y ya lo hice, sigo sin saber que fallaba (ME fallaba) pero lo solucione para lo que realmente queria y me vino muy bien ver tu codigo, hace tiempo que no programo en batch.. ;D en fin tio muchas gracias.

VUELVO A EDITAR ¬¬:
Ahora que me he fijado con mas detenimiento en el codigo que me has puesto no entiendo para que son los signos de exclamacion? cuando llamas la variable fname, podrias explicarmelo brevemente o darme algun link con su correspondiente documentacion?

for %%i in (*.zip) do (Echo "%%i" & set "fname=%%~ni" & echo !fname!)
#906
Scripting / Re: renombrar archivos bat
12 Marzo 2012, 14:30 PM
Perdona pero a mi en el codigo que has dejado si lo pongo asi:
for /D %%i in (*.zip) do (Echo "%%i" & set fname=%%~ni & echo %fname%) siempre me aparece vacia ("") la variable %fname% pero luego no, sabrias decirme el porque?

PD: Si, tengo varias carpetas que acaban en .zip, las he renombrado yo para hacer pruebas..

Gracias de antemano ;)

EDITO:

Vale, lo que yo queria hacer que es renombrar carpetas que acaben en .avi (porque se descargan asi) a su nombre pero sin ese molesto .avi xD en fin quedo asi:

for /D %%i in (*.avi) do (Echo "%%i" & "ren %%i" "%%~ni")
#907
A mi padre probablemente por el porno xDD
#908
Tienes puesta esa opcion de "borrar inmediatamente" o "no mover los archivos a la papelera" el pen de 8Gb tambien? Porque cuando le das a las propiedades de la papelera te sale la imagen que te a puesto elektro h@cker si no tienes el pen conectado solo te apareceran los discos duros.
#909
Tambien puedes volver a guardarlos en un lugar seguro para ir pasandolos de generacion en generacion cuando ya la humanidad este tan avanzada que solo use hologramas y esos CDs valgan millones de dollares (o la moneda que este de moda) y asi los hijos de los hijos de tus tatarabiznietos no tendran que trabajar en la nueva estrella de la muerte para pagarse la hipoteca.
#910
Pues yo se lo quite a mi viejo pasando a modo seguro pasando el antivirus y un antitrojan y despues limpiando manualmente las entradas del registro (winlogon y run, que son las que cambia normalemente) y listo, como nuevo.