Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Eleкtro en 3 Febrero 2012, 07:29 am



Título: [Batch] [Aporte] (O eso creo xD) Consola de reciclaje v1.0
Publicado por: Eleкtro en 3 Febrero 2012, 07:29 am
Bueno, una persona me pidió ayuda para crear un código que pueda eliminar archivos arrastrandolos hasta la consola

Al principio parecia fácil, pero no lo es para nada, cuando arrastras los archivos, si tienen espacio apareceran con comillas dobles, y sino, sin comillas

Por eso, habia que separar el string en varios, no iba a funcionar con parámetros

En fin, Aqui tienen este experimento, La consola de reciclaje 1.0  :xD

PD: Odio crear contadores de este tipo


(http://img341.imageshack.us/img341/5403/prtscrcapturen.jpg)

(http://img526.imageshack.us/img526/2108/prtscrcapture2f.jpg)



Código:
@Echo off
Title Consola de reciclaje v1.0


REM: By Elektro H@cker





:Basurero
:::::::::
Mode con cols=70 lines=20
Nircmd win center ititle "Consola de reciclaje" >nul 2>&1
Setlocal enabledelayedexpansion
Set min=0
Set max=1
Color 1f

Cls
Echo+
Echo:   Arrastre hasta aqu¡ los archivos o carpetas que desea eliminar.
Echo+
Echo+
Set /P Archivos=^>^>^>

If not defined archivos (Goto :Basurero)

Echo %Archivos% | FIND ":" >NUL
If NOT %ERRORLEVEL% EQU 0 (Goto :Basurero)

Set archivos=%archivos%##





:FILTRAR
::::::::

cls
Echo+
Echo: Eliminando los archivos, Porfavor Espere...
Echo+


:Bucle
Echo !string! | find "#" >NUL 2>&1
call :limite
Set String=!archivos:~%min%,%max%!;

echo ^!string:~-2! | findstr ":" >NUL
If %errorlevel% equ 0 (
Set String=!string:~-3,2!\!String!
Set String=!string:^"=!
Set /A max+=1
Set /A Min+=!MAX!
Set max=1
call :ELIMINAR !String:~0,-3!
goto :Bucle
) else (
Set /A max+=1
Goto :Bucle
)

:Limite
if %errorlevel% equ 0 (
Set /A min-=3
Set /A max+=1
call :string_Final
call :ELIMINAR !String:~0,-1!
Goto :FIN
)
GOTO :EOF

:string_Final
Set String=!archivos:~%min%,%max%!;
Set String=!string:^"=!
goto :EOF





:ELIMINAR
:::::::::
If /I "%*" EQU "C:\" (GOTO :EOF)
If /I "%*" EQU "D:\" (GOTO :EOF)
If /I "%*" EQU "E:\" (GOTO :EOF)
If /I "%*" EQU "F:\" (GOTO :EOF)
If /I "%*" EQU "G:\" (GOTO :EOF)
If /I "%*" EQU "H:\" (GOTO :EOF)



:Archivo
For /F "Tokens=*" %%# IN ('echo "%*"') do (
Del /Q /F %%# >NUL 2>&1
Call :Carpeta %%#
)
GOTO :EOF

:Carpeta

If Exist %* (
Echo+
Echo: Eliminando carpeta: %*
RD /Q /S %*
) ELSE (
Echo+
Echo: Eliminando archivo: "%~nx1"
)
Goto :EOF





:FIN
::::

Cls
Echo+
Echo: Se han borrado todos los archivos.
Echo+
Pause
exit