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ú

Temas - Eleкtro

#901
Hola.

Estaba haciendo unas correcciones en un script de una persona en otro foro, Y me gustó bastante la idea del script, Así que decidí mejorarlo y simplificarlo...



- Codeado por Ianna. Modificado por Elektro H@cker.

Básicamente el script se podría comparar con el comando AT, Para realizar una acción determinada a una hora determinada (Eso si, Del mismo día).
Obviamente no es un programador de tareas, Ni está tán completo como para commpararlo, Pero de algún modo si.
CLOCK Pausa el proceso por lotes hasta que llega la hora, Y luego continua.

Ejemplos:

Código (DOS) [Seleccionar]

Clock 08:15:00 Echo+ Buenos dias!

Código (dos) [Seleccionar]
Clock 22:50:00 Shutdown /R
Código (dos) [Seleccionar]
@Echo OFF
Clock 14:30:00
Echo Ha llegado la hora de comer!
Pause
Exit


PD: Realizar un comando después de la hora no es algo obligatorio.

CitarSuspende el proceso de un programa por lotes hasta la hora determinada.

» CLOCK [HORA:MINUTO:SEGUNDO]

Ejemplos:

» CLOCK 20:30:15
» CLOCK 22:50:00 Shutdown /R

La hora se aplica con un formato de 24 horas.

(Codeado por Ianna. Modificado por Elektro H@cker.)


El Script:

Código (dos) [Seleccionar]
:::::::::::::::::::::
::: CLOCK UTILITY :::
:::::::::::::::::::::
::: By El_Ianna
::: Mod by Elektro H@cker

@ECHO OFF

REM Comprobación de errores.
IF "%~1" EQU "/?" (GOTO :HELP)
IF "%*" EQU "" (GOTO :MSG)

REM Seteo de la hora seleccionada.
SET "FINAL=%1"
SET "FINAL=%FINAL::=%"
IF "%FINAL:~0,1%" EQU "0" (Set FINAL=%FINAL:~1%)

REM Seteo de la acción.
SET "ACTION=%*"
SET "ACTION=%Action:~8%"

:SLEEP
SET "HORARIO=%TIME:~0,2%%TIME:~3,2%%TIME:~6,2%"
SET "HORARIO=%Horario: =%"
IF %HORARIO% GEQ %FINAL% (GOTO :END) ELSE (GOTO :SLEEP)

:HELP
ECHO+
ECHO: MM'""""'YMM M""MMMMMMMM MMP"""""YMM MM'""""'YMM M""MMMMM""M
ECHO: M' .mmm. `M M  MMMMMMMM M' .mmm. `M M' .mmm. `M M  MMMM' .M
ECHO: M  MMMMMooM M  MMMMMMMM M  MMMMM  M M  MMMMMooM M       .MM
ECHO: M  MMMMMMMM M  MMMMMMMM M  MMMMM  M M  MMMMMMMM M  MMMb. YM
ECHO: M. `MMM' .M M  MMMMMMMM M. `MMM' .M M. `MMM' .M M  MMMMb  M
ECHO: MM.     .dM M         M MMb     dMM MM.     .dM M  MMMMM  M
ECHO: MMMMMMMMMMM MMMMMMMMMMM MMMMMMMMMMM MMMMMMMMMMM MMMMMMMMMMM | MORE & REM "
ECHO: Suspende el proceso de un programa por lotes hasta la hora determinada. | MORE
ECHO: ¯ CLOCK [HORA:MINUTO:SEGUNDO] | MORE
ECHO: Ejemplos: | MORE
ECHO: ¯ CLOCK 20:30:15
ECHO: ¯ CLOCK 22:50:00 Shutdown /R | MORE
ECHO: La hora se aplica con un formato de 24 horas. | MORE
ECHO: (Codeado por Ianna. Modificado por Elektro H@cker.) | MORE
EXit /B 0

:MSG
ECHO msgbox "La sintaxis del comando no es correcta. CLOCK /? para mas informacion.",16,"Utilidad Clock (By Ianna)" > "%TEMP%\Clock.vbs"
START /B Wscript "%TEMP%\Clock.vbs"
Exit /B 1

:END
ECHO+
ECHO: Utilidad Clock (By Ianna) | MORE
IF Defined ACTION %Action%

#902


Una utilidad por linea de comandos para convertir entre bytes, kilobytes, megabytes, gigabytes, terabytes, y petabytes.

CitarComo usarlo:

CTool.exe {Tamaño} {Unidad} {A unidad}

  Las unidades son: Bytes, KB, MB, GB, TB, PB.

Ejemplos:

 - Convertir bytes a megabytes:
CTool 446.777.647.104 Bytes MB

 - Convertir megabytes a kilobytes:
CTool 44.33 MB KB

 - Convertir petabyte a todas las unidades:
CTool 1 PB

Algunas imagenes:

   

- El script convertido a EXE:



- Un ejemplo de uso en Batch, Para averiguar el espacio libre en el disco duro:
Código (dos) [Seleccionar]
@Echo OFF
For /f "tokens=3 delims= " %%# in ('Dir ^| find "libres"') do (Set "Bytes=%%#")
For /f "tokens=2 delims==" %%# in ('Ctool %bytes% bytes gb ^| Find "="') do (Echo: Espacio libre en %Homedrive%%%#)
Pause >NUL


- El script, Codeado en Ruby:
 PD: Quizás no me ha quedado muy "bonito", Repito bastantes cosas que se podrian simplificar xD pero no estoy por la labor de hacerlo, Así como está ya funciona xD.

Código (ruby) [Seleccionar]
# -*- coding: UTF-8 -*-

# Conversion Tool v0.1
# By Elektro H@cker

exit if Object.const_defined?(:Ocra)

def logo()
puts "
 _______  _______                __
|   _   ||       |.-----..-----.|  |
|.  1___||.|   | ||  _  ||  _  ||  |
|.  |___ `-|.  |-'|_____||_____||__|
|:  1   |  |:  |
|::.. . |  |::.|    Conversion
`-------'  `---'       Tool


"
end

def help()
print "
How to use it:
       
  #{__FILE__.split('/').last.split('.').first}.exe {Size} {Unit} {To unit}

  Units are: Bytes, KB, MB, GB, TB, PB.


Examples:

 - Convert bytes to megabytes:

   #{__FILE__.split('/').last.split('.').first}.exe 446.777.647.104 Bytes MB

 - Convert megabytes to kilobytes:

   #{__FILE__.split('/').last.split('.').first}.exe 44.33 MB KB

 - Convert petabyte to all:

   #{__FILE__.split('/').last.split('.').first}.exe 1 PB

"
Process.exit
end

def BytesToUnit (number)

 @KILOBYTE   = 1024.0
 @MEGABYTE = 1024.0 * 1024.0
 @GIGABYTE  = 1024.0 * 1024.0 * 1024.0
 @TERABYTE  = 1024.0 * 1024.0 * 1024.0 * 1024.0
 @PETABYTE  = 1024.0 * 1024.0 * 1024.0 * 1024.0 * 1024.0

@Bytes = number.to_s + " Bytes"

@Kilos = (number / @KILOBYTE).to_s
 if number.to_s.length > 20 and @Kilos.length > 3 and @Kilos.split('.').first.length == 1
   @Kilos = "KB too depth"
 elsif  not @Kilos.include? "-" and not @Kilos[0..3].eql? "0.00"
    @Kilos = @Kilos.split('.').first + "." + @Kilos.split('.').last[0..1] + " KB"
  elsif
    @Kilos = "0.0 KB".to_s
 end # Kilos

@Megas = (number / @MEGABYTE).to_s
 if number.to_s.length > 20 and @Megas.length > 3 and @Megas.split('.').first.length == 1
   @Megas = "MB too depth"
 elsif  not @Megas.include? "-" and not @Megas[0..3].eql? "0.00"
    @Megas = @Megas.split('.').first + "." + @Megas.split('.').last[0..1] + " MB"
  elsif
    @Megas = "0.0 MB".to_s
  end # Megas

@Gigas = (number / @GIGABYTE).to_s
 if number.to_s.length > 20 and @Gigas.length > 3 and @Gigas.split('.').first.length == 1
   @Gigas = "GB too depth"
 elsif not @Gigas.include? "-"
    @Gigas = @Gigas.split('.').first + "." + @Gigas.split('.').last[0..1] + " GB"
  elsif
    @Gigas = "0.0 GB".to_s
  end # Gigas

@Teras = (number / @TERABYTE).to_s
 if number.to_s.length > 20 and @Teras.length > 3 and @Teras.split('.').first.length == 1
   @Teras = "TB too depth"
 elsif not @Teras.include? "-"
    @Teras = @Teras.split('.').first + "." + @Teras.split('.').last[0..1] + " TB"
  elsif
    @Teras = "0.0 TB".to_s
  end # Teras

@Petas = (number / @PETABYTE).to_s
 if number.to_s.length > 20 and @Petas.length > 3 and @Petas.split('.').first.length == 1
   @Petas = "PB too depth"
 elsif not @Petas.include? "-"
    @Petas = @Petas.split('.').first + "." + @Petas.split('.').last[0..1] + " PB"
  elsif
    @Petas = "0.0 PB".to_s
  end # Petas
end

def KBToUnit (number)

 @BYTE           = 1024.0
 @MEGABYTE = 1024.0
 @GIGABYTE  = 1024.0 * 1024.0
 @TERABYTE  = 1024.0 * 1024.0 * 1024.0
 @PETABYTE  = 1024.0 * 1024.0 * 1024.0 * 1024.0

@Bytes = (number * @BYTE).to_s
 if number.to_s.length > 20 and @Bytes.length > 3 and @Bytes.split('.').first.length == 1
   @Bytes = "Bytes too depth"
 elsif @Bytes[0..2].eql? "0.0"
   @Bytes = @Bytes.split('.').first + "." + @Bytes.split('.').last[0..1] + " Bytes"
 elsif
   @Bytes = @Bytes.split('.').first + "." + @Bytes.split('.').last[0] + " Bytes"
 end # Bytes

@Kilos = number.to_s + " KB"

@Megas = (number / @MEGABYTE).to_s
 if number.to_s.length > 20 and @Megas.length > 3 and @Megas.split('.').first.length == 1
   @Megas = "MB too depth"
 elsif  not @Megas.include? "-" and not @Megas[0..3].eql? "0.00"
    @Megas = @Megas.split('.').first + "." + @Megas.split('.').last[0..1] + " MB"
  elsif
    @Megas = "0.0 MB".to_s
  end # Megas

@Gigas = (number / @GIGABYTE).to_s
 if number.to_s.length > 20 and @Gigas.length > 3 and @Gigas.split('.').first.length == 1
   @Gigas = "GB too depth"
 elsif not @Gigas.include? "-"
    @Gigas = @Gigas.split('.').first + "." + @Gigas.split('.').last[0..1] + " GB"
  elsif
    @Gigas = "0.0 GB".to_s
  end # Gigas

@Teras = (number / @TERABYTE).to_s
 if number.to_s.length > 20 and @Teras.length > 3 and @Teras.split('.').first.length == 1
   @Teras = "TB too depth"
 elsif not @Teras.include? "-"
    @Teras = @Teras.split('.').first + "." + @Teras.split('.').last[0..1] + " TB"
  elsif
    @Teras = "0.0 TB".to_s
  end # Teras

@Petas = (number / @PETABYTE).to_s
 if number.to_s.length > 20 and @Petas.length > 3 and @Petas.split('.').first.length == 1
   @Petas = "PB too depth"
 elsif not @Petas.include? "-"
    @Petas = @Petas.split('.').first + "." + @Petas.split('.').last[0..1] + " PB"
  elsif
    @Petas = "0.0 PB".to_s
  end # Petas
end

def MBToUnit (number)

 @BYTE           = 1024.0 * 1024.0
 @KILOBYTE   = 1024.0
 @GIGABYTE  = 1024.0
 @TERABYTE  = 1024.0 * 1024.0
 @PETABYTE  = 1024.0 * 1024.0 * 1024.0

@Bytes = (number * @BYTE).to_s
 if number.to_s.length > 20 and @Bytes.length > 3 and @Bytes.split('.').first.length == 1
   @Bytes = "Bytes too depth"
 elsif @Bytes[0..2].eql? "0.0"
   @Bytes = @Bytes.split('.').first + "." + @Bytes.split('.').last[0..1] + " Bytes"
 elsif
   @Bytes = @Bytes.split('.').first + "." + @Bytes.split('.').last[0] + " Bytes"
 end # Bytes

@Kilos = (number * @KILOBYTE).to_s
 if number.to_s.length > 20 and @Kilos.length > 3 and @Kilos.split('.').first.length == 1
   @Kilos = "KB too depth"
 elsif  not @Kilos.include? "-" and not @Kilos[0..3].eql? "0.00"
    @Kilos = @Kilos.split('.').first + "." + @Kilos.split('.').last[0..1] + " KB"
  elsif
    @Kilos = "0.0 KB".to_s
 end # Kilos

@Megas = number.to_s + " MB"

@Gigas = (number / @GIGABYTE).to_s
 if number.to_s.length > 20 and @Gigas.length > 3 and @Gigas.split('.').first.length == 1
   @Gigas = "GB too depth"
 elsif not @Gigas.include? "-"
    @Gigas = @Gigas.split('.').first + "." + @Gigas.split('.').last[0..1] + " GB"
  elsif
    @Gigas = "0.0 GB".to_s
  end # Gigas

@Teras = (number / @TERABYTE).to_s
 if number.to_s.length > 20 and @Teras.length > 3 and @Teras.split('.').first.length == 1
   @Teras = "TB too depth"
 elsif not @Teras.include? "-"
    @Teras = @Teras.split('.').first + "." + @Teras.split('.').last[0..1] + " TB"
  elsif
    @Teras = "0.0 TB".to_s
  end # Teras

@Petas = (number / @PETABYTE).to_s
 if number.to_s.length > 20 and @Petas.length > 3 and @Petas.split('.').first.length == 1
   @Petas = "PB too depth"
 elsif not @Petas.include? "-"
    @Petas = @Petas.split('.').first + "." + @Petas.split('.').last[0..1] + " PB"
  elsif
    @Petas = "0.0 PB".to_s
  end # Petas
end

def GBToUnit (number)

 @BYTE           = 1024.0 * 1024.0 * 1024.0
 @KILOBYTE   = 1024.0 * 1024.0
 @MEGABYTE = 1024.0
 @TERABYTE  = 1024.0
 @PETABYTE  = 1024.0 * 1024.0

@Bytes = (number * @BYTE).to_s
 if number.to_s.length > 20 and @Bytes.length > 3 and @Bytes.split('.').first.length == 1
   @Bytes = "Bytes too depth"
 elsif @Bytes[0..2].eql? "0.0"
   @Bytes = @Bytes.split('.').first + "." + @Bytes.split('.').last[0..1] + " Bytes"
 elsif
   @Bytes = @Bytes.split('.').first + "." + @Bytes.split('.').last[0] + " Bytes"
 end # Bytes

@Kilos = (number * @KILOBYTE).to_s
 if number.to_s.length > 20 and @Kilos.length > 3 and @Kilos.split('.').first.length == 1
   @Kilos = "KB too depth"
 elsif  not @Kilos.include? "-" and not @Kilos[0..3].eql? "0.00"
    @Kilos = @Kilos.split('.').first + "." + @Kilos.split('.').last[0..1] + " KB"
  elsif
    @Kilos = "0.0 KB".to_s
 end # Kilos

@Megas = (number * @MEGABYTE).to_s
 if number.to_s.length > 20 and @Megas.length > 3 and @Megas.split('.').first.length == 1
   @Megas = "MB too depth"
 elsif  not @Megas.include? "-" and not @Megas[0..3].eql? "0.00"
    @Megas = @Megas.split('.').first + "." + @Megas.split('.').last[0..1] + " MB"
  elsif
    @Megas = "0.0 MB".to_s
 end # Megas

@Gigas = number.to_s + " GB"

@Teras = (number / @TERABYTE).to_s
 if number.to_s.length > 20 and @Teras.length > 3 and @Teras.split('.').first.length == 1
   @Teras = "TB too depth"
 elsif not @Teras.include? "-"
    @Teras = @Teras.split('.').first + "." + @Teras.split('.').last[0..1] + " TB"
  elsif
    @Teras = "0.0 TB".to_s
  end # Teras

@Petas = (number / @PETABYTE).to_s
 if number.to_s.length > 20 and @Petas.length > 3 and @Petas.split('.').first.length == 1
   @Petas = "PB too depth"
 elsif not @Petas.include? "-"
    @Petas = @Petas.split('.').first + "." + @Petas.split('.').last[0..1] + " PB"
  elsif
    @Petas = "0.0 PB".to_s
  end # Petas
end

def TBToUnit (number)

 @BYTE           = 1024.0 * 1024.0 * 1024.0 * 1024.0
 @KILOBYTE   = 1024.0 * 1024.0 * 1024.0
 @MEGABYTE = 1024.0 * 1024.0
 @GIGABYTE  = 1024.0
 @PETABYTE  = 1024.0

@Bytes = (number * @BYTE).to_s
 if number.to_s.length > 20 and @Bytes.length > 3 and @Bytes.split('.').first.length == 1
   @Bytes = "Bytes too depth"
 elsif @Bytes[0..2].eql? "0.0"
   @Bytes = @Bytes.split('.').first + "." + @Bytes.split('.').last[0..1] + " Bytes"
 elsif
   @Bytes = @Bytes.split('.').first + "." + @Bytes.split('.').last[0] + " Bytes"
 end # Bytes

@Kilos = (number * @KILOBYTE).to_s
 if number.to_s.length > 20 and @Kilos.length > 3 and @Kilos.split('.').first.length == 1
   @Kilos = "KB too depth"
 elsif  not @Kilos.include? "-" and not @Kilos[0..3].eql? "0.00"
    @Kilos = @Kilos.split('.').first + "." + @Kilos.split('.').last[0..1] + " KB"
  elsif
    @Kilos = "0.0 KB".to_s
 end # Kilos

@Megas = (number * @MEGABYTE).to_s
 if number.to_s.length > 20 and @Megas.length > 3 and @Megas.split('.').first.length == 1
   @Megas = "MB too depth"
 elsif  not @Megas.include? "-" and not @Megas[0..3].eql? "0.00"
    @Megas = @Megas.split('.').first + "." + @Megas.split('.').last[0..1] + " MB"
  elsif
    @Megas = "0.0 MB".to_s
 end # Megas

@Gigas = (number * @GIGABYTE).to_s
 if number.to_s.length > 20 and @Gigas.length > 3 and @Gigas.split('.').first.length == 1
   @Gigas = "GB too depth"
 elsif not @Gigas.include? "-"
    @Gigas = @Gigas.split('.').first + "." + @Gigas.split('.').last[0..1] + " GB"
  elsif
    @Gigas = "0.0 GB".to_s
  end # Gigas

@Teras = number.to_s + " TB"

@Petas = (number / @PETABYTE).to_s
 if number.to_s.length > 20 and @Petas.length > 3 and @Petas.split('.').first.length == 1
   @Petas = "PB too depth"
 elsif not @Petas.include? "-"
    @Petas = @Petas.split('.').first + "." + @Petas.split('.').last[0..1] + " PB"
  elsif
    @Petas = "0.0 PB".to_s
  end # Petas
end

def PBToUnit (number)

 @BYTE          = 1024.0 * 1024.0 * 1024.0 * 1024.0 * 1024.0
 @KILOBYTE   = 1024.0 * 1024.0 * 1024.0 * 1024.0
 @MEGABYTE = 1024.0 * 1024.0 * 1024.0
 @GIGABYTE  = 1024.0 * 1024.0
 @TERABYTE  = 1024.0

@Bytes = (number * @BYTE).to_s
 if number.to_s.length > 20 and @Bytes.length > 3 and @Bytes.split('.').first.length == 1
   @Bytes = "Bytes too depth"
 elsif @Bytes[0..2].eql? "0.0"
   @Bytes = @Bytes.split('.').first + "." + @Bytes.split('.').last[0..1] + " Bytes"
 elsif
   @Bytes = @Bytes.split('.').first + "." + @Bytes.split('.').last[0] + " Bytes"
 end # Bytes

@Kilos = (number * @KILOBYTE).to_s
 if number.to_s.length > 20 and @Kilos.length > 3 and @Kilos.split('.').first.length == 1
   @Kilos = "KB too depth"
 elsif  not @Kilos.include? "-" and not @Kilos[0..3].eql? "0.00"
    @Kilos = @Kilos.split('.').first + "." + @Kilos.split('.').last[0..1] + " KB"
  elsif
    @Kilos = "0.0 KB".to_s
 end # Kilos

@Megas = (number * @MEGABYTE).to_s
 if number.to_s.length > 20 and @Megas.length > 3 and @Megas.split('.').first.length == 1
   @Megas = "MB too depth"
 elsif  not @Megas.include? "-" and not @Megas[0..3].eql? "0.00"
    @Megas = @Megas.split('.').first + "." + @Megas.split('.').last[0..1] + " MB"
  elsif
    @Megas = "0.0 MB".to_s
 end # Megas

@Gigas = (number * @GIGABYTE).to_s
 if number.to_s.length > 20 and @Gigas.length > 3 and @Gigas.split('.').first.length == 1
   @Gigas = "GB too depth"
 elsif not @Gigas.include? "-"
    @Gigas = @Gigas.split('.').first + "." + @Gigas.split('.').last[0..1] + " GB"
  elsif
    @Gigas = "0.0 GB".to_s
  end # Gigas

@Teras = (number * @TERABYTE).to_s
 if number.to_s.length > 20 and @Teras.length > 3 and @Teras.split('.').first.length == 1
   @Teras = "TB too depth"
 elsif not @Teras.include? "-"
    @Teras = @Teras.split('.').first + "." + @Teras.split('.').last[0..1] + " TB"
  elsif
    @Teras = "0.0 TB".to_s
  end # Teras

@Petas = number.to_s + " PB"
end

# Error control
def args()
 if ARGV.empty? or ARGV[0] == "/?" or ARGV[1] == nil  or ARGV[2] == nil and not ARGV[1] == "bytes" and not ARGV[1] == "Bytes" and not ARGV[1] == "BYTES" and not ARGV[1] == "kb" and not ARGV[1] == "Kb" and not ARGV[1] == "KB" and not ARGV[1] == "kB" and not ARGV[1] == "mb" and not ARGV[1] == "Mb" and not ARGV[1] == "MB" and not ARGV[1] == "mB" and not ARGV[1] == "gb" and not ARGV[1] == "gB" and not ARGV[1] == "Gb" and not ARGV[1] == "GB" and not ARGV[1] == "tb" and not ARGV[1] == "Tb" and not ARGV[1] == "TB" and not ARGV[1] == "tB" and not ARGV[1] == "pb" and not ARGV[1] == "pB" and not ARGV[1] == "Pb" and not ARGV[1] == "PB"
   help()
 elsif not ARGV[2] == "bytes" and not ARGV[2] == "Bytes" and not ARGV[2] == "BYTES" and not ARGV[2] == "kb" and not ARGV[2] == "Kb" and not ARGV[2] == "KB" and not ARGV[2] == "kB" and not ARGV[2] == "mb" and not ARGV[2] == "Mb" and not ARGV[2] == "MB" and not ARGV[2] == "mB" and not ARGV[2] == "gb" and not ARGV[2] == "gB" and not ARGV[2] == "Gb" and not ARGV[2] == "GB" and not ARGV[2] == "tb" and not ARGV[2] == "Tb" and not ARGV[2] == "TB" and not ARGV[2] == "tB" and not ARGV[2] == "pb" and not ARGV[2] == "pB" and not ARGV[2] == "Pb" and not ARGV[2] == "PB"
   $ToUnit = "all"
 end
end

# Process
logo()
args()

input = ARGV[0]
unit = ARGV[1]
$ToUnit = ARGV[2]

input = input.gsub(',', '.')

if not input.length == 6 or not input.length == 5 and not input[-3] == "."
 input = input.gsub('.', '')
 input = input.to_i
elsif
 input = input.to_f
end

if unit =~ /bytes/i
 BytesToUnit(input)
elsif unit =~ /kb/i
 KBToUnit(input)
elsif unit =~ /mb/i
 MBToUnit(input)
elsif unit =~ /gb/i
 GBToUnit(input)
elsif unit =~ /tb/i
 TBToUnit(input)
elsif unit =~ /pb/i
 PBToUnit(input)
end

if $ToUnit =~ /bytes/i
 puts "#{input} #{unit} = #{@Bytes}"
elsif $ToUnit =~ /kb/i
 puts "#{input} #{unit} = #{@Kilos}"
elsif $ToUnit =~ /mb/i
 puts "#{input} #{unit} = #{@Megas}"
elsif $ToUnit =~ /gb/i
 puts "#{input} #{unit} = #{@Gigas}"
elsif $ToUnit =~ /tb/i
 puts "#{input} #{unit} = #{@Teras}"
elsif $ToUnit =~ /pb/i
 puts "#{input} #{unit} = #{@Petas}"
elsif $ToUnit == nil
 puts "#{input} #{unit} = #{@Bytes}"
 puts "#{input} #{unit} = #{@Kilos}"
 puts "#{input} #{unit} = #{@Megas}"
 puts "#{input} #{unit} = #{@Gigas}"
 puts "#{input} #{unit} = #{@Teras}"
 puts "#{input} #{unit} = #{@Petas}"
end

__END__
#903


Un simple programa por línea de comandos que convierte archivos de registro (.REG) a archivos por lotes (.BAT)

Modo de empleo:
REG2BAT.exe [Archivo]

Ejemplos:
REG2BAT.exe Archivo.reg
REG2BAT.exe *.reg
REG2BAT.exe *


Ahora con un sencillo instalador!
Convierte archivos con un solo click del ratón! ::)


(Hecho especialmente para aquellos Batcheros que no disponen del intérprete de Ruby  :-[)



Nota:
Esta version solamente es compatible con archivos de registro en codificación Unicode, debido a las mejoras para evitar los bugs corregidos.




Test.reg
(Un simple archivo de registro para que puedan testear el programa.)

Windows Registry Editor Version 5.00

# Delete test:
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]
"my key"=-
[-HKEY_CURRENT_USER\test]

# Add Test
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]
"Binary Test"=hex:da,da,d2,dd,d0
"Dword Test"=dword:23523626
"Expand SZ Test"=hex(2):25,00,77,00,69,00,6e,00,64,00,69,00,72,00,25,00,00,00
"Multi SZ Test"=hex(7):22,00,63,00,3a,00,5c,00,70,00,72,00,6f,00,67,00,72,00,\
 61,00,6d,00,20,00,66,00,69,00,6c,00,65,00,73,00,5c,00,74,00,65,00,73,00,74,\
 00,2e,00,65,00,78,00,65,00,22,00,00,00,00,00
"Qword Test"=hex(b):2f,3b,00,00,00,00,00,00
"SZ Test"="Wscript.exe \"C:\\Program Files (x86)\\RUN.vbs\""


La conversión del test.reg:

Código (dos) [Seleccionar]
REG DELETE "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /V "my key" /F
REG DELETE "HKCU\test" /F
REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /V "Binary Test" /T "REG_BINARY" /D dadad2ddd0 /F
REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /V "Dword Test" /T "REG_DWORD" /D 0x23523626 /F
REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /V "Expand SZ Test" /T "REG_EXPAND_SZ" /D "%%windir%%" /F
REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /V "Qword Test" /T "REG_QWORD" /D "0x0000000000003b2f" /F
REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /V "Multi SZ Test" /T "REG_MULTI_SZ" /D "\"c:\program files\test.exe\"" /F
REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /V "SZ Test" /T "REG_SZ" /D "Wscript.exe \"C:\Program Files (x86)\RUN.vbs\"" /F





REG2BAT.rb

Versión 0.3

Soporte para convertir lineas de comentario a comentario de Batch
Se ha mejorado la eficacia de conversión para evitar al 100% problemas con claves de varias lineas.

Bugs corregidos:
- Error al intentar convertir una clave binaria de varias lineas
- Error al convertir claves predeterminadas

Versión 0.2
Ahora soporta el uso del comodín *
REG2BAT *
REG2BAT *.reg


# -*- coding: UTF-8 -*-


# # # # # # # # # # # # # # # # # # #

#           REG2BAT v0.3            #          

#         By Elektro H@cker         #

#  Tested with REGEDIT 5.0 version  #

# # # # # # # # # # # # # # # # # # #


require 'tmpdir'
exit if Object.const_defined?(:Ocra)

def logo
 puts "
_  .-')     ('-.                              .-. .-')     ('-.     .-') _    
( \\( -O )  _(  OO)                             \\  ( OO )   ( OO ).-.(  OO) )  
,------. (,------. ,----.         .-----.      ;-----.\\   / . --. //     '._  
|   /`. ' |  .---''  .-./-')     / ,-.   \\     | .-.  |   | \\-.  \\ |'--...__)
|  /  | | |  |    |  |_( O- )    '-'  |  |     | '-' /_).-'-'  |  |'--.  .--'
|  |_.' |(|  '--. |  | .--, \\       .'  /      | .-. `.  \\| |_.'  |   |  |    
|  .  '.' |  .--'(|  | '. (_/     .'  /__      | |  \\  |  |  .-.  |   |  |    
|  |\\  \\  |  `---.|  '--'  |     |       |     | '--'  /  |  | |  |   |  |    
`--' '--' `------' `------'      `-------'     `------'   `--' `--'   `--'    
 "

 puts "

                         Coded by Elektro H@cker

                     ▄                        ▄█████  
                     ███▄▄        ▄▄▄▄▄▄▄▄█████████▀  
                     ██████▀ ▄▄████████████████████  
                     ▀████ ▄███████████████████████▄  
                      ███ ▄███████████████████████████
                      ▀█ █████████████████▀▀   ██ ████
                     ▄▄█████████████████▀      ██ ████
                     ███▀▀████████████▀       ▄█  ████
                     ███▄    ▀▀█████▀ ▄▀▄    ▄█  ▄████
                      ███▄▄  ▄▀▄ ▀███▄▀▀  ▄▄▀█▀  █████
                     ▄▄█▄▀█▄▄ ▀▀████████▀███  ▄ ██████
                     ▀████▄▀▀▀██▀▀██▀▀██  ▀█  █▄█████
                       ▀▀███▄ ▀█  ▀█   ▀ █   ▄██████ ▄
                     ████▄▄▀██▄ █  ▄  █▄ ███ ████▀▀ ▄█
                     █▀▀▀▀▀▀ █████▄█▄▄████████▀ ▄▄ ▄██
                      ▄▄█▀▀   ▀█▀██████████▀ ▄███  █▀
                     ██▀   ▄▄▀  ▄ ▀▀▀████▀ ▄████      
                     █ ▄██  ▄██      ▀█  ████  ▄███▄
                       ▄███ ▄███            ▀▀  ▄   ▀▀
 "
 sleep 0.5
end

def help()
 print "\n How to use:\n\n"
 print "  " + __FILE__.split('/').last + " [File]\n\n"
 print "\n Examples:\n\n"
 print "  " + __FILE__.split('/').last + " File.reg\n\n"
 print "  " + __FILE__.split('/').last + " *.reg\n\n"
 print "  " + __FILE__.split('/').last + " *\n\n"
 Process.exit
end

def expand(string)

# Comment line
 if string[0].eql? (';')
     $key = string
     print "[COMMENT] #{string}\n"
     write_comment()
     $key = ''
 end # Comment line

# Key to delete
 if string[0..1].eql? ('[-')
   $key = string[2..-2]
   $key = $key.gsub('HKEY_CLASSES_ROOT', 'HKCR').gsub('HKEY_CURRENT_USER', 'HKCU').gsub('HKEY_LOCAL_MACHINE', 'HKLM').gsub('HKEY_USERS', 'HKU')
   $subkey = ''
   print "IN: [-#{$key}]\n\n"
   write_delete()
   $key = ''

# Key to add
 elsif string[0..0].eql? ('[') and string[-1].eql? (']')
   $key = string[1..-2]
   $key = $key.gsub('HKEY_CLASSES_ROOT', 'HKCR').gsub('HKEY_CURRENT_USER', 'HKCU').gsub('HKEY_LOCAL_MACHINE', 'HKLM').gsub('HKEY_USERS', 'HKU')
   print "IN: #{string}\n\n"

#Subkey to delete
 elsif string[-1].eql? ('-')
   $subkey = string
   $subkey = $subkey[0..-3]
   print "[REG] #{string}\n"
   write_delete
   $key = ''

#Subkey to add
 elsif string.include? '"'
   if not $key.eql? ''

     $subkey = string
     $subkey = $subkey.gsub('\\\\', '\\')
     $subkey = $subkey.gsub(      '@=' , ' "" /D '                )
     $subkey = $subkey.gsub(   '=hex:' , ' /T "REG_BINARY" /D '   )
     $subkey = $subkey.gsub('=hex(2):' , ' /T "REG_EXPAND_SZ" /D ')
     $subkey = $subkey.gsub('=hex(7):' , ' /T "REG_MULTI_SZ" /D ' )
     $subkey = $subkey.gsub('=hex(b):' , ' /T "REG_QWORD" /D '    )
     $subkey = $subkey.gsub( '=dword:' , ' /T "REG_DWORD" /D '    )
     $subkey = $subkey.gsub(     '"="' ,'" /T "REG_SZ" /D "'      )

     # BIANRY
       if $subkey.include? 'REG_BINARY'
          $subkey = $subkey.gsub(',' , '')
       end # BINARY

     # DWORD
       if $subkey.include? 'REG_DWORD'
          $DWORD_data = $subkey.split('/D').last
          $New_DWORD_data =  ' 0x' + $DWORD_data[1..-1]
          $subkey = $subkey.gsub($DWORD_data, $New_DWORD_data)
       end # DWORD

     # QWORD
       if $subkey.include? 'REG_QWORD'
          $QWORD_data = $subkey.split('/D').last.gsub(',','').gsub(' ', '')
          hex_string_len = $QWORD_data.length
          $New_QWORD_data = ''
          min = -2
          until min < -hex_string_len
            hex_string_block = $QWORD_data[min,2]
            $New_QWORD_data << hex_string_block
            min -= 2
          end # until
          $subkey = $subkey.split('/D').first + '/D "0x' + $New_QWORD_data + '"'
       end # QWORD

     # EXPAND
     #   &
     # MULTI
       if $subkey.include? 'REG_EXPAND_SZ' or $subkey.include? 'REG_MULTI_SZ'
          hex_string = $subkey.split('/D').last.gsub(' ', '').gsub('\\', '').gsub(',00', '').gsub('00,', '').gsub(',', '')
          hex_string_len = hex_string.length
          $New_hex_data = ''
          min = 0
          until min == hex_string_len
            $New_hex_data << hex_string[min,2].hex.chr
            min += 2
          end # until
          $New_hex_data = $New_hex_data.gsub('"', '\"').gsub('%', '%%')
          $subkey = $subkey.split('/D').first + '/D "' + $New_hex_data + '"'
       end # EXPAND & MULTI

     print "[REG] #{string}\n"
     write_add()
     $subkey = ''
   end # if not $key.eql? ''
 end # if & elsifs
end

def write_delete()
 if not $subkey.eql? ""
   File.open(ARGV[$num][0..-4] + "bat", 'a+') do |file|
     file.print "REG DELETE \"#{$key}\" /V #{$subkey} /F \n"
     print "[BAT] REG DELETE \"#{$key}\" /V #{$subkey} /F \n\n"
   end # file (1)
 elsif
   File.open(ARGV[$num][0..-4] + "bat", 'a+') do |file|  
     file.print "REG DELETE \"#{$key}\" /F \n"
     print "[BAT] REG DELETE \"#{$key}\" /F \n\n"
   end # file (2)
 end # if & elsifs
end

def write_add()
 File.open(ARGV[$num][0..-4] + "bat", 'a+') do |file|  
   file.print "REG ADD \"#{$key}\" /V #{$subkey} /F \n"
   print "[BAT] REG ADD \"#{$key}\" /V #{$subkey} /F \n\n"
 end # file
end

def write_comment()
 File.open(ARGV[$num][0..-4] + "bat", 'a+') do |file|  
   file.print "REM #{$key}\n"
 end # file
end

def args()
 if ARGV.empty? or ARGV[$num] == "/?"
   help()
 elsif ARGV[$num] == nil
   print "Finished.\n"
   Process.exit
 elsif not File.exist? (ARGV[$num])
   print "\n ERROR.               File doesn't exist...\n\n"
   help()
 elsif not ARGV[$num].split('.').last.eql? "reg" and not ARGV[$num].split('.').last.eql? "REG"
   print "\n ERROR.               File " + ARGV[$num] + " is not a valid registry...\n\n"
   $num += 1
   if ARGV.length == 1
     print "Finished.\n"
     Process.exit
   end # ARGV.length
 args()
 end # if & elsifs
end

########################################################################################################

string = ''
$string_hex = ''
$num = 0
$regcode = ''

logo()
args()

while not $num == ARGV.length or $num < ARGV.length
 args()
 File.open(ARGV[$num], "r:utf-16le:UTF-8").each_line { |line|
   if line[0..1].eql?   "  "  then line = line[2..-1] end
   if line[-3..-2].eql? ",\\" then line = line[0..-3] end
   $regcode = $regcode + line
 }
 File.open("#{Dir.tmpdir}/#{ARGV[$num].split('\\').last}", 'a+') { |file| file.puts $regcode }
 File.open("#{Dir.tmpdir}/#{ARGV[$num].split('\\').last}", "r").each_line { |string| expand(string[0..-2]) and string = ''}
 File.open("#{Dir.tmpdir}/#{ARGV[$num].split('\\').last}", "w") { |delete| delete.print "" }
 $regcode = ''
 $num += 1
end # while

puts "Finished.\n"
__END__





Saludos  :D
#904
Scripting / [Batch] [APORTE] Text Protector
23 Marzo 2012, 21:07 PM



Un pequeño programa commandline para proteger sus archivos con contenido de texto para que queden inteligibles a ojos de otra persona.

Ejemplo:

Antes:
@Echo off
chcp 1252 >nul
Echo Test | More
Echo abc123 áéíóú ñ Ñ € ^
Pause


Después: charlist[65,1]charlist[31,1]charlist[3,1]charlist[8,1]charlist[15,1]charlist[0,1]charlist[15,1]charlist[6,1]charlist[6,1]
charlist[3,1]charlist[16,1]charlist[3,1]charlist[8,1]charlist[0,1]charlist[54,1]charlist[55,1]charlist[58,1]charlist[55,1]charlist[0,1]charlist[78,1]charlist[14,1]charlist[21,1]charlist[12,1]
charlist[31,1]charlist[3,1]charlist[8,1]charlist[15,1]charlist[0,1]charlist[46,1]charlist[5,1]charlist[19,1]charlist[20,1]charlist[0,1]charlist[64,1]charlist[0,1]charlist[39,1]charlist[15,1]charlist[18,1]charlist[5,1]
charlist[31,1]charlist[3,1]charlist[8,1]charlist[15,1]charlist[0,1]charlist[1,1]charlist[2,1]charlist[3,1]charlist[54,1]charlist[55,1]charlist[56,1]charlist[0,1]charlist[172,1]charlist[147,1]charlist[174,1]charlist[175,1]charlist[110,1]charlist[0,1]charlist[202,1]charlist[0,1]charlist[203,1]charlist[0,1]charlist[210,1]charlist[0,1]charlist[92,1]
charlist[42,1]charlist[1,1]charlist[21,1]charlist[19,1]charlist[5,1]





- Testeado con archivos .bat (ANSI y UTF-8), .cmd, .rb, .rbw, .py, .pyw, .txt (ANSI y UTF-8), .reg y .vbs. Pero debería soportar cualquier archivo de tipo texto.

- No hay ningún tipo de problema con ningún caracter convencional de un teclado.

- Soporta una gran cantidad de caracteres adicionales.

DESCARGA (Correjido un despiste con el caracter "x" e "y"): http://www.mediafire.com/?rv7lk7k2zgf55yf
Espero que os guste.

Salu2.


Citar

Modo de empleo:

Protector.exe [Opción] [Archivo]

Opciones:

[-p] [--proteger] | Protege un archivo.

[-d] [--desproteger] | Desprotege un archivo.



Un código de ejemplo:

Código (dos) [Seleccionar]
@Echo OFF
For /F "Tokens=*" %%_ in ('Dir /B C:\Contraseñas\*.txt') Do (
    Echo: "%%_"
    Protector.exe --proteger "%%_" | Find "protegido" | More
    Del /Q "%%_")
Pause
Exit


PD: El script está codeado en Ruby, Lo pueden encontrar aquí: http://foro.elhacker.net/scripting/ruby_aporte_text_protector-t357330.0.html
#905
Scripting / [Ruby] [APORTE] Text Protector
23 Marzo 2012, 21:06 PM



Un pequeño code para proteger sus archivos con contenido de texto para que queden inteligibles a ojos de otra persona.


Ejemplo:

Antes:
En un lugar de la Mancha, de cuyo nombre no quiero acordarme...

Después: charlist[31,1]charlist[14,1]charlist[0,1]charlist[21,1]charlist[14,1]charlist[0,1]charlist[12,1]charlist[21,1]charlist[7,1]charlist[1,1]charlist[18,1]charlist[0,1]charlist[4,1]charlist[5,1]charlist[0,1]charlist[12,1]charlist[1,1]charlist[0,1]charlist[39,1]charlist[1,1]charlist[14,1]charlist[3,1]charlist[8,1]charlist[1,1]charlist[80,1]charlist[0,1]charlist[4,1]charlist[5,1]charlist[0,1]charlist[3,1]charlist[21,1]charlist[25,1]charlist[15,1]charlist[0,1]charlist[14,1]charlist[15,1]charlist[13,1]charlist[2,1]charlist[18,1]charlist[5,1]charlist[0,1]charlist[14,1]charlist[15,1]charlist[0,1]charlist[17,1]charlist[21,1]charlist[9,1]charlist[5,1]charlist[18,1]charlist[15,1]charlist[0,1]charlist[1,1]charlist[3,1]charlist[15,1]charlist[18,1]charlist[4,1]charlist[1,1]charlist[18,1]charlist[13,1]charlist[5,1]charlist[81,1]charlist[81,1]charlist[81,1]






- Testeado con archivos .bat (ANSI y UTF-8), .cmd, .rb, .rbw, .py, .pyw, .txt (ANSI y UTF-8), .reg y .vbs. Pero debería soportar cualquier archivo de tipo texto.

- No hay ningún tipo de problema con ningún caracter convencional de un teclado.

- Soporta una gran cantidad de caracteres adicionales.

Espero que os guste.

Salu2.


Citar

Modo de empleo:

 Protector.rb [Opción] [Archivo]

Opciones:

 [-p] [--proteger]       | Protege un archivo.

 [-d] [--desproteger]  | Desprotege un archivo.


# -*- coding: UTF-8 -*-
exit if Object.const_defined?(:Ocra)

def logo
puts "
   _____           _       ___           _             _
  /__   \\_____  __| |_    / _ \\_ __ ___ | |_  ___  ___| |_  ___  _ __
    / /\\/ _ \\ \\/ /| __|  / /_)/ '__/ _ \\| __|/ _ \\/ __| __|/ _ \\| '__|
   / / |  __/>  < | |_  / ___/| | | (_) | |_|  __/ (__| |_| (_) | |
   \\/   \\___/_/\\_\\ \\__| \\/    |_|  \\___/ \\__|\\___|\\___|\\__|\\___/|_|

"
sleep 0.50
puts "
                           By Elektro H@cker

                   ▄░░░░░░░░░░░░░░░░░░░░░░░░▄█████░░
                   ███▄▄░░░░░░░░▄▄▄▄▄▄▄▄█████████▀░░
                   ██████▀░▄▄████████████████████░░░
                   ▀████░▄███████████████████████▄░░
                   ░███░▄███████████████████████████
                   ░▀█░█████████████████▀▀░░░██░████
                   ▄▄█████████████████▀░░░░░░██░████
                   ███▀▀████████████▀░░░░░░░▄█░░████
                   ███▄░░░░▀▀█████▀░▄▀▄░░░░▄█░░▄████
                   ░███▄▄░░▄▀▄░▀███▄▀▀░░▄▄▀█▀░░█████
                   ▄▄█▄▀█▄▄░▀▀████████▀███░░▄░██████
                   ▀████▄▀▀▀██▀▀██▀▀██░░▀█░░█▄█████░
                   ░░▀▀███▄░▀█░░▀█░░░▀░█░░░▄██████░▄
                   ████▄▄▀██▄░█░░▄░░█▄░███░████▀▀░▄█
                   █▀▀▀▀▀▀░█████▄█▄▄████████▀░▄▄░▄██
                   ░▄▄█▀▀░░░▀█▀██████████▀░▄███░░█▀░
                   ██▀░░░▄▄▀░░▄░▀▀▀████▀░▄████░░░░░░
                   █▀░░▄██░░▄██░░░░░░▀█░░████░░▄███▄
                   ░░▄███░▄███░░░░░░░░░░░░▀▀░░▄░░░▀▀
"
sleep 1
end

def help()
  print "\n Modo de empleo:\n\n"
  print "  " + __FILE__.split('/').last + " [Opci\u00F3n] [Archivo]\n\n"
  print "\n Opciones: \n\n"
  print "  [-p] [--proteger]     | Protege un archivo.\n\n"
  print "  [-d] [--desproteger]  | Desprotege un archivo.\n"
  Process.exit
end

def proteger(file)
File.open(file, 'r').each_line do |string|
  print "Procesando línea: " + string.encode("utf-8")
  length = (string.length)-1
   until $long == length
    enc(string[$long,1])
   end
write($newstring)
$newstring = ''
$long = 0
end
end

def desproteger(file)
File.open(file, 'r').each_line do |string|
  dec(string)
end
end

def enc(character)
while not character.eql? $charlist[$shift,1] and not character.encode("utf-8").eql? $charlist[$shift,1]
  $shift += 1
end
$newstring = $newstring + "charlist[" + $shift.to_s + ",1]"
$shift = 0
$long += 1
end

def dec(string)
string = string.gsub("charlist[0,1]", ' ').gsub("charlist[1,1]", 'a').gsub("charlist[2,1]", 'b').gsub("charlist[3,1]", 'c').gsub("charlist[4,1]", 'd').gsub("charlist[5,1]", 'e').gsub("charlist[6,1]", 'f').gsub("charlist[7,1]", 'g').gsub("charlist[8,1]", 'h').gsub("charlist[9,1]", 'i').gsub("charlist[10,1]", 'j').gsub("charlist[11,1]", 'k').gsub("charlist[12,1]", 'l').gsub("charlist[13,1]", 'm').gsub("charlist[14,1]", 'n').gsub("charlist[15,1]", 'o').gsub("charlist[16,1]", 'p').gsub("charlist[17,1]", 'q').gsub("charlist[18,1]", 'r').gsub("charlist[19,1]", 's').gsub("charlist[20,1]", 't').gsub("charlist[21,1]", 'u').gsub("charlist[22,1]", 'v').gsub("charlist[23,1]", 'w').gsub("charlist[24,1]", 'x').gsub("charlist[25,1]", 'y').gsub("charlist[26,1]", 'z').gsub("charlist[27,1]", 'A').gsub("charlist[28,1]", 'B').gsub("charlist[29,1]", 'C').gsub("charlist[30,1]", 'D').gsub("charlist[31,1]", 'E').gsub("charlist[32,1]", 'F').gsub("charlist[33,1]", 'G').gsub("charlist[34,1]", 'H').gsub("charlist[35,1]", 'I').gsub("charlist[36,1]", 'J').gsub("charlist[37,1]", 'K').gsub("charlist[38,1]", 'L').gsub("charlist[39,1]", 'M').gsub("charlist[40,1]", 'N').gsub("charlist[41,1]", 'O').gsub("charlist[42,1]", 'P').gsub("charlist[43,1]", 'Q').gsub("charlist[44,1]", 'R').gsub("charlist[45,1]", 'S').gsub("charlist[46,1]", 'T').gsub("charlist[47,1]", 'U').gsub("charlist[48,1]", 'V').gsub("charlist[49,1]", 'W').gsub("charlist[50,1]", 'X').gsub("charlist[51,1]", 'Y').gsub("charlist[52,1]", 'Z').gsub("charlist[53,1]", '0').gsub("charlist[54,1]", '1').gsub("charlist[55,1]", '2').gsub("charlist[56,1]", '3').gsub("charlist[57,1]", '4').gsub("charlist[58,1]", '5').gsub("charlist[59,1]", '6').gsub("charlist[60,1]", '7').gsub("charlist[61,1]", '8').gsub("charlist[62,1]", '9').gsub("charlist[63,1]", '\\').gsub("charlist[64,1]", '|').gsub("charlist[65,1]", '@').gsub("charlist[66,1]", '#').gsub("charlist[67,1]", '~').gsub("charlist[68,1]", '!').gsub("charlist[69,1]", '$').gsub("charlist[70,1]", '%').gsub("charlist[71,1]", '&').gsub("charlist[72,1]", '/').gsub("charlist[73,1]", '(').gsub("charlist[74,1]", ')').gsub("charlist[75,1]", '=').gsub("charlist[76,1]", '?').gsub("charlist[77,1]", '<').gsub("charlist[78,1]", '>').gsub("charlist[79,1]", ';').gsub("charlist[80,1]", ',').gsub("charlist[81,1]", '.').gsub("charlist[82,1]", '-').gsub("charlist[83,1]", '_').gsub("charlist[84,1]", '+').gsub("charlist[85,1]", '*').gsub("charlist[86,1]", '[').gsub("charlist[87,1]", ']').gsub("charlist[88,1]", '{').gsub("charlist[89,1]", '}').gsub("charlist[90,1]", '`').gsub("charlist[91,1]", '\'').gsub("charlist[92,1]", '^').gsub("charlist[93,1]", '"').gsub("charlist[94,1]", ':').gsub("charlist[95,1]", '...').gsub("charlist[108,1]", '...').gsub("charlist[109,1]", ',').gsub("charlist[135,1]", '¡').gsub("charlist[136,1]", '¢').gsub("charlist[129,1]", '£').gsub("charlist[139,1]", 'Š').gsub("charlist[145,1]", 'Ö').gsub("charlist[141,1]", '•').gsub("charlist[142,1]", '—').gsub("charlist[143,1]", 'µ').gsub("charlist[121,1]", 'à').gsub("charlist[147,1]", 'é').gsub("charlist[148,1]", '·').gsub("charlist[149,1]", 'Ô').gsub("charlist[150,1]", 'Þ').gsub("charlist[151,1]", 'ã').gsub("charlist[152,1]", 'ë').gsub("charlist[158,1]", 'Ž').gsub("charlist[114,1]", '‰').gsub("charlist[132,1]", '‹').gsub("charlist[156,1]", '"').gsub("charlist[162,1]", 'š').gsub("charlist[158,1]", 'Ž').gsub("charlist[159,1]", 'Ó').gsub("charlist[160,1]", 'Ø').gsub("charlist[102,1]", '™').gsub("charlist[162,1]", 'š').gsub("charlist[163,1]", '¤').gsub("charlist[164,1]", '¥').gsub("charlist[165,1]", '¦').gsub("charlist[166,1]", 'ç').gsub("charlist[110,1]", 'ú').gsub("charlist[168,1]", '¨').gsub("charlist[97,1]", '­').gsub("charlist[170,1]", 'ï').gsub("charlist[172,1]", 'á').gsub("charlist[112,1]", 'é').gsub("charlist[174,1]", 'í').gsub("charlist[175,1]", 'ó').gsub("charlist[179,1]", 'ì').gsub("charlist[180,1]", 'ò').gsub("charlist[130,1]", 'ù').gsub("charlist[182,1]", 'Á').gsub("charlist[183,1]", 'É').gsub("charlist[184,1]", 'Í').gsub("charlist[186,1]", 'Ú').gsub("charlist[187,1]", 'À').gsub("charlist[188,1]", 'È').gsub("charlist[189,1]", 'Ì').gsub("charlist[190,1]", 'Ò').gsub("charlist[191,1]", 'Ù').gsub("charlist[192,1]", 'ä').gsub("charlist[195,1]", 'ö').gsub("charlist[196,1]", 'ü').gsub("charlist[197,1]", 'Ä').gsub("charlist[198,1]", 'Ë').gsub("charlist[125,1]", 'Ï').gsub("charlist[201,1]", 'Ü').gsub("charlist[202,1]", 'ñ').gsub("charlist[203,1]", 'Ñ').gsub("charlist[204,1]", 'ª').gsub("charlist[205,1]", 'º').gsub("charlist[207,1]", '¿').gsub("charlist[209,1]", '´').gsub("charlist[210,1]", '€').gsub("charlist[211,1]", 'ç').gsub("charlist[212,1]", 'Ç').gsub("charlist[214,1]", 'Û').gsub("charlist[215,1]", '°').gsub("charlist[216,1]", 'ß')
print "Procesando línea: " + string.encode("utf-8")
File.open('desprotegido.bat', 'a+') do |escribir|
  escribir.print string
end
end

def write(string)
File.open(ARGV[1].split('.').first + "_PROTEGIDO_." + ARGV[1].split('.').last, 'a+') do |escribir|
  escribir.print $newstring + "\n"
end
end



### Control de errores ###

def errors()
if ARGV.empty? or ARGV[0] == "/?"
   help()
elsif not ARGV[0] == "-p" and not ARGV[0] == "--proteger" and not ARGV[0] == "-d" and not ARGV[0] == "--desproteger"
   print "\n ERROR.   Opcion incorrecta...\n\n"
   help()
elsif (ARGV[1])==()
   print "\n ERROR.            Debe escribir la ruta del archivo...\n\n"
   Process.exit
elsif not File.exist? (ARGV[1])
   print "\n ERROR.            El archivo no existe...\n\n"
   Process.exit
elsif
  fileext = (ARGV[1].split('.').last)
  ext = $extensions.include?fileext
    if ext == false
      print "\n ERROR.            ." + fileext + " no es un formato compatible...\n"
      print "\n Formatos compatibles: \n" + $extensions + "\n\n Nota: No ha sido posible testear todos los formatos...\n"
      Process.exit
    end
  end
end



### vars ###

$charlist = ' abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789\\|@#~!$%&/()=?<>;,.-_+*[]{}`\'^":...,¡¢£...ŠÖ•—µ,Öàé·ÔÞã뎉‹"šŽÓØ™š¤¥¦§ú¨­ïáéíóúàèìòùÁÉÍÓÚÀÈÌÒÙäëïöüÄËÏÖÜñѪº·¿¡´€ßÚݾ·ÓÞý‗¨┴╔═Ë┌└╚╠Ê┘õÙ´÷³─╦¤Í▄±Ð¬║À┐í┤ÇþÃ▄█░▀├┬ø'
$extensions = "
.1st .ans .bat .cmd .cs  .diz .doc .eml .err .fft
.js  .log .lst .me  .nfo .odt .php .py  .pyw .rb 
.rbw .rft .reg .rpt .rtd .rtf .rtx .saf .sig .sub
.sxg .sxw .tex .thp .tmd .tvj .txt .unx .vbs .vct
.vnt .wbk .wp  .wpd .wpt .wri .xdl .xml .yml"
$newstring = ''
$long = 0
$shift = 0
file = ARGV[1]



### Proceso ###

logo()
errors()

if ARGV[0] == "-p" or ARGV[0] == "--proteger"
  File.open(file, 'a+') do |escribir|
    escribir.print "\n"
  end
proteger(file)
print "\n\nArchivo protegido.\n"
end

if ARGV[0] == "-d" or ARGV[0] == "--desproteger"
desproteger(file)
print "\nArchivo desprotegido.\n"
end


__END__

#906
Para introducir un espacio usando los códigos alt de windows es: "ALT+32", Pero...

¿Existe algún código ALT+ para introducir un "Enter"?

PD: He visto los 255 ALT caracteres y no hay nada sobre el enter... Pero quizás exista algún "Truco"? u otra forma?

gracias...
#907
Hola

Se me ha ocurrido que estaría muy bien por ejemplo para los que practicamos mucho scripting... Que al usar la opción del menú contextual "Nuevo > archivo de texto" se creara el archivo con un contenido de texto dentro (Personalizado)... Como si fuese una plantilla vamos.

Por ejemplo "Nuevo > Archivo bat" y dentro del bat por defecto:

Código (dos) [Seleccionar]
@Echo off
Pause
Exit


Creo que debe haber alguna opción en el registro de Windows para poder hacerlo...

¿Alguien sabe algo?

EDITO:
Ya lo he conseguido, Solo hay que crear una clave de nombre "Data" y de valor "SZ" o "BINARY" y colocar el texto
Pero tiene una limitación, No se pueden agregar saltos de linea, me refiero a lineas vacías... Quizás si, pero no se hacerlo.

Un saludo
#908
No es un Bat, Pero es una herramienta commandline para Windows que devuelve la posición del mouse. Sirve para usarla en un bat.



Hay 2 versiones:

1ª.
x64:
x86:
Esta versión devuelve la posición una sola vez.



http://www.mediafire.com/?koxk9r3tykf1tad
Esta versión devuelve la posición en un ciclo infinito.


EDITO: Los links me los borran de todos los servers, será mejor que lo conviertan a exe ustedes mismos.

Salu2



El script original desde el cual he compilado la versión x64 es este:

Código (python) [Seleccionar]

# Python
# Script original: http://www.daniweb.com/software-development/python/code/230886/get-the-mouse-position-on-the-screen-on-linux

import ctypes as ct
import os, time

class GetPoint(ct.Structure):
   _fields_ = [("x", ct.c_ulong), ("y", ct.c_ulong)]

def get_mousepos():
   pt = GetPoint()
   ct.windll.user32.GetCursorPos(ct.byref(pt))
   return int(pt.x), int(pt.y)

os.system('Title Mouse XY coordenates MOD by Elektro H@cker')

infinito = 1
while infinito == 1 :
time.sleep(0.10)
os.system('cls')
print( "x=%d, y=%d" % get_mousepos() )
show()


- El script original desde el cual he compilado la versión x86 es este:

Código (ruby) [Seleccionar]

# Ruby
# Script original: http://www.tobiasbraner.de/2011/07/04/windows-get-the-mouse-position-with-ruby/


require 'Win32API'
exit if Object.const_defined?(:Ocra)

infinito = 1
getCursorPos = Win32API.new("user32", "GetCursorPos", ['P'], 'V')
lpPoint = " " * 8
system('Title MouseXY MOD By Elektro H@cker')

while infinito == 1
 system('cls')
 getCursorPos.Call(lpPoint)
 x, y = lpPoint.unpack("LL")
 print "X:", x, " Y:", y,""
 sleep 0.15
end

# Fin
#909
BatOfuser
   By Elektro H@cker



Esto es un versión experimental, La he probado con varios scripts y funciona. También sirve para ofuscar texto plano y supongo que con otros formatos también debería funcionar.

Me ha costado bastante esfuerzo realizar un ofuscador sin usar la expansion (Todos los ofuscadores de bats que he visto la usan, Y eso conlleva incompatibilidad con algunos caracteres)

Este ofuscador soporta muchos, muchos más caracteres que otro ofuscador (Hecho en batch) convencional.

Errores conocidos:

       Si una linea del script contiene un número impar de comilals dobles (Debido a una mala sintaxis del usuario) esa línea no se llegará a ofuscar correctamente, Asegurense de cerrar las comillas en sus códigos.
       Elcaracter del escape ^ se desofusca 2 veces SI NO SE TRATA DE UN .BAT

Espero que lo disfruten.

Salu2

PD: En cuanto pueda, El proyecto lo codearé en Ruby para eliminar de golpe los errores y agregar una mejor compatibilidad sobre los caracteres utf-8, Y de paso lo compilaré para Windows para poder usar el ofuscador por linea de comandos, Como una herramienta más.




Test.bat

Código (DOS) [Seleccionar]
@echo off
Title BatOfuser Test
REM Elektro H@cker
REM Visita: Foro.ElHacker.Net
CHCP 1252 >NUL
Echo+
Echo: 0123456789
Echo: abcdefghijklmnopqrstuvwxyz
Echo: ABCDEFGHIJKLMNOPQRSTUVWXYZ
Echo: áéíóú àèìòù ÁÉÍÓÚ ÀÈÌÒÙ äëïöü ÄËÏÖÜ ñ Ñ ª º · ¿ ¡ '
Echo: \|@#~!$%&/()=?<>:;,.-_+*[]{}`'^^ ""
Echo+
Pause
Exit



BatOfuser.bat

@Echo OFF
Title BatOfuser

REM By Elektro H@cker
:: Visita: Foro.elhacker.net

Mode con cols=108 lines=25
NirCMD Win Center Ititle "BatOfuser" >NUL 2>&1
REM chcp 1252 >NUL

:Logo
Echo+
Echo: 88888888ba                          ,ad8888ba,       ad88
Echo: 88      "8b                ,d      d8"'    `"8b     d8"
Echo: 88      ,8P                88     d8'        `8b    88
Echo: 88aaaaaa8P'  ,adPPYYba,  MM88MMM  88          88  MM88MMM  88       88  ,adPPYba,   ,adPPYba,  8b,dPPYba,
Echo: 88""""""8b,  ""     `Y8    88     88          88    88     88       88  I8[    ""  a8P_____88  88P'   "Y8
Echo: 88      `8b  ,adPPPPP88    88     Y8,        ,8P    88     88       88   `"Y8ba,   8PP"""""""  88
Echo: 88      a8P  88,    ,88    88,     Y8a.    .a8P     88     "8a,   ,a88  aa    ]8I  "8b,   ,aa  88
Echo: 88888888P"   `"8bbdP"Y8    "Y888    `"Y8888Y"'      88      `"YbbdP'Y8  `"YbbdP"'   `"Ybbd8"'  88
Echo+
Echo: By Elektro H@cker
Echo+
Echo: ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
Goto :Menu

:Charlist
Set "Alpha=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
Set "Numeric=0123456789"
Set "Special=\|@#~!$%&/()=?<>;,.-_+*[]{}`'^^":
Set "Special_UTF8=...,¡¢£...ŠÖ•—µ,Öàé·ÔÞã뎉‹"šŽÓØ™š¤¥¦§ú¨­ï"
Rem Special_UTF8= áéíóú àèìòù ÁÉÍÓÚ ÀÈÌÒÙ äëïöü ÄËÏÖÜ ñ Ñ ª º · ¿ ¡ '

:Menu
Echo+
Echo: Arrastra a la ventana el archivo que quieres ofuscar/desofuscar... | More
Set /P Archivo=^>^>^>
If not defined archivo (Goto :Menu)
Type %archivo%| Find "By Elektro H@cker" >NUL 2>&1
If %Errorlevel% EQU 0 (Goto :Desofuscador)
Cls




:::::::::::::::::
:Ofuscador
:::::::::::::::::

:Lineas
Set Linea=0
For /F "Tokens=*" %%a in ('Type %Archivo% ^| Find /V /C ""') do (Set Total=%%a)

:Leer_Ofuscador
If "%linea%" EQU "%total%" (Goto :Fin_Ofuscador)

For /F "Tokens=*" %%a in ('Type %Archivo% ^| MORE +%Linea%') do (
   Echo: Ofuscando: "%%a"
   Set /A Linea+=1
   Set "String=%%a"
   If not defined string (Goto :Leer_Ofuscador)
   Echo %%a>"%TEMP%\String.tmp"
   FOR %%? IN (%TEMP%\String.tmp) DO ( SET /A Longitud=%%~z? - 2 )
   Goto :Ofuscar
)




::::::::::::::::::::::
:Desofuscador
::::::::::::::::::::::

:Lineas
Set Linea=0
For /F "Tokens=*" %%a in ('Type %Archivo% ^| Find /V /C ""') do (Set Total=%%a)


:Leer_Desofuscador
For /F "Tokens=*" %%a in ('Type %Archivo% ^| MORE /E +%Linea%') do (
   Set /A Linea+=1
   Set "String=%%a"
   Goto :Desofuscar
)




:Ofuscar


If "%Count%" EQU "%Longitud%" (
   call :Write_Ofuscador
   Goto :Leer_Ofuscador)

::Comilladoble
Set "String=%String:"=€%"& rem "

::Espacio
If "%String:~0,1%" EQU " " (Set "New_String=%New_String% ")

::Alpha
If "%String:~0,1%" EQU "a" (Set "New_String=%New_String%%%Alpha:~0,1%%")
If "%String:~0,1%" EQU "b" (Set "New_String=%New_String%%%Alpha:~1,1%%")
If "%String:~0,1%" EQU "c" (Set "New_String=%New_String%%%Alpha:~2,1%%")
If "%String:~0,1%" EQU "d" (Set "New_String=%New_String%%%Alpha:~3,1%%")
If "%String:~0,1%" EQU "e" (Set "New_String=%New_String%%%Alpha:~4,1%%")
If "%String:~0,1%" EQU "f" (Set "New_String=%New_String%%%Alpha:~5,1%%")
If "%String:~0,1%" EQU "g" (Set "New_String=%New_String%%%Alpha:~6,1%%")
If "%String:~0,1%" EQU "h" (Set "New_String=%New_String%%%Alpha:~7,1%%")
If "%String:~0,1%" EQU "i" (Set "New_String=%New_String%%%Alpha:~8,1%%")
If "%String:~0,1%" EQU "j" (Set "New_String=%New_String%%%Alpha:~9,1%%")
If "%String:~0,1%" EQU "k" (Set "New_String=%New_String%%%Alpha:~10,1%%")
If "%String:~0,1%" EQU "l" (Set "New_String=%New_String%%%Alpha:~11,1%%")
If "%String:~0,1%" EQU "m" (Set "New_String=%New_String%%%Alpha:~12,1%%")
If "%String:~0,1%" EQU "n" (Set "New_String=%New_String%%%Alpha:~13,1%%")
If "%String:~0,1%" EQU "o" (Set "New_String=%New_String%%%Alpha:~14,1%%")
If "%String:~0,1%" EQU "p" (Set "New_String=%New_String%%%Alpha:~15,1%%")
If "%String:~0,1%" EQU "q" (Set "New_String=%New_String%%%Alpha:~16,1%%")
If "%String:~0,1%" EQU "r" (Set "New_String=%New_String%%%Alpha:~17,1%%")
If "%String:~0,1%" EQU "s" (Set "New_String=%New_String%%%Alpha:~18,1%%")
If "%String:~0,1%" EQU "t" (Set "New_String=%New_String%%%Alpha:~19,1%%")
If "%String:~0,1%" EQU "u" (Set "New_String=%New_String%%%Alpha:~20,1%%")
If "%String:~0,1%" EQU "v" (Set "New_String=%New_String%%%Alpha:~21,1%%")
If "%String:~0,1%" EQU "w" (Set "New_String=%New_String%%%Alpha:~22,1%%")
If "%String:~0,1%" EQU "x" (Set "New_String=%New_String%%%Alpha:~23,1%%")
If "%String:~0,1%" EQU "y" (Set "New_String=%New_String%%%Alpha:~24,1%%")
If "%String:~0,1%" EQU "z" (Set "New_String=%New_String%%%Alpha:~25,1%%")
If "%String:~0,1%" EQU "A" (Set "New_String=%New_String%%%Alpha:~26,1%%")
If "%String:~0,1%" EQU "B" (Set "New_String=%New_String%%%Alpha:~27,1%%")
If "%String:~0,1%" EQU "C" (Set "New_String=%New_String%%%Alpha:~28,1%%")
If "%String:~0,1%" EQU "D" (Set "New_String=%New_String%%%Alpha:~29,1%%")
If "%String:~0,1%" EQU "E" (Set "New_String=%New_String%%%Alpha:~30,1%%")
If "%String:~0,1%" EQU "F" (Set "New_String=%New_String%%%Alpha:~31,1%%")
If "%String:~0,1%" EQU "G" (Set "New_String=%New_String%%%Alpha:~32,1%%")
If "%String:~0,1%" EQU "H" (Set "New_String=%New_String%%%Alpha:~33,1%%")
If "%String:~0,1%" EQU "I" (Set "New_String=%New_String%%%Alpha:~34,1%%")
If "%String:~0,1%" EQU "J" (Set "New_String=%New_String%%%Alpha:~35,1%%")
If "%String:~0,1%" EQU "K" (Set "New_String=%New_String%%%Alpha:~36,1%%")
If "%String:~0,1%" EQU "L" (Set "New_String=%New_String%%%Alpha:~37,1%%")
If "%String:~0,1%" EQU "M" (Set "New_String=%New_String%%%Alpha:~38,1%%")
If "%String:~0,1%" EQU "N" (Set "New_String=%New_String%%%Alpha:~39,1%%")
If "%String:~0,1%" EQU "O" (Set "New_String=%New_String%%%Alpha:~40,1%%")
If "%String:~0,1%" EQU "P" (Set "New_String=%New_String%%%Alpha:~41,1%%")
If "%String:~0,1%" EQU "Q" (Set "New_String=%New_String%%%Alpha:~42,1%%")
If "%String:~0,1%" EQU "R" (Set "New_String=%New_String%%%Alpha:~43,1%%")
If "%String:~0,1%" EQU "S" (Set "New_String=%New_String%%%Alpha:~44,1%%")
If "%String:~0,1%" EQU "T" (Set "New_String=%New_String%%%Alpha:~45,1%%")
If "%String:~0,1%" EQU "U" (Set "New_String=%New_String%%%Alpha:~46,1%%")
If "%String:~0,1%" EQU "V" (Set "New_String=%New_String%%%Alpha:~47,1%%")
If "%String:~0,1%" EQU "W" (Set "New_String=%New_String%%%Alpha:~48,1%%")
If "%String:~0,1%" EQU "X" (Set "New_String=%New_String%%%Alpha:~49,1%%")
If "%String:~0,1%" EQU "Y" (Set "New_String=%New_String%%%Alpha:~50,1%%")
If "%String:~0,1%" EQU "Z" (Set "New_String=%New_String%%%Alpha:~51,1%%")

::Numeric
If "%String:~0,1%" EQU "0" (Set "New_String=%New_String%%%Numeric:~0,1%%")
If "%String:~0,1%" EQU "1" (Set "New_String=%New_String%%%Numeric:~1,1%%")
If "%String:~0,1%" EQU "2" (Set "New_String=%New_String%%%Numeric:~2,1%%")
If "%String:~0,1%" EQU "3" (Set "New_String=%New_String%%%Numeric:~3,1%%")
If "%String:~0,1%" EQU "4" (Set "New_String=%New_String%%%Numeric:~4,1%%")
If "%String:~0,1%" EQU "5" (Set "New_String=%New_String%%%Numeric:~5,1%%")
If "%String:~0,1%" EQU "6" (Set "New_String=%New_String%%%Numeric:~6,1%%")
If "%String:~0,1%" EQU "7" (Set "New_String=%New_String%%%Numeric:~7,1%%")
If "%String:~0,1%" EQU "8" (Set "New_String=%New_String%%%Numeric:~8,1%%")
If "%String:~0,1%" EQU "9" (Set "New_String=%New_String%%%Numeric:~9,1%%")

::Special_UTF8
If "%String:~0,1%" EQU "á" (Set "New_String=%New_String%%%Special_UTF8:~0,1%%")
If "%String:~0,1%" EQU "é" (Set "New_String=%New_String%%%Special_UTF8:~1,1%%")
If "%String:~0,1%" EQU "í" (Set "New_String=%New_String%%%Special_UTF8:~2,1%%")
If "%String:~0,1%" EQU "ó" (Set "New_String=%New_String%%%Special_UTF8:~3,1%%")
If "%String:~0,1%" EQU "ú" (Set "New_String=%New_String%%%Special_UTF8:~4,1%%")
If "%String:~0,1%" EQU "à" (Set "New_String=%New_String%%%Special_UTF8:~5,1%%")
If "%String:~0,1%" EQU "è" (Set "New_String=%New_String%%%Special_UTF8:~6,1%%")
If "%String:~0,1%" EQU "ì" (Set "New_String=%New_String%%%Special_UTF8:~7,1%%")
If "%String:~0,1%" EQU "ò" (Set "New_String=%New_String%%%Special_UTF8:~8,1%%")
If "%String:~0,1%" EQU "ù" (Set "New_String=%New_String%%%Special_UTF8:~9,1%%")
If "%String:~0,1%" EQU "Á" (Set "New_String=%New_String%%%Special_UTF8:~10,1%%")
If "%String:~0,1%" EQU "É" (Set "New_String=%New_String%%%Special_UTF8:~11,1%%")
If "%String:~0,1%" EQU "Í" (Set "New_String=%New_String%%%Special_UTF8:~12,1%%")
If "%String:~0,1%" EQU "Ó" (Set "New_String=%New_String%%%Special_UTF8:~13,1%%")
If "%String:~0,1%" EQU "Ú" (Set "New_String=%New_String%%%Special_UTF8:~14,1%%")
If "%String:~0,1%" EQU "À" (Set "New_String=%New_String%%%Special_UTF8:~15,1%%")
If "%String:~0,1%" EQU "È" (Set "New_String=%New_String%%%Special_UTF8:~16,1%%")
If "%String:~0,1%" EQU "Ì" (Set "New_String=%New_String%%%Special_UTF8:~17,1%%")
If "%String:~0,1%" EQU "Ò" (Set "New_String=%New_String%%%Special_UTF8:~18,1%%")
If "%String:~0,1%" EQU "Ù" (Set "New_String=%New_String%%%Special_UTF8:~19,1%%")
If "%String:~0,1%" EQU "ä" (Set "New_String=%New_String%%%Special_UTF8:~20,1%%")
If "%String:~0,1%" EQU "ë" (Set "New_String=%New_String%%%Special_UTF8:~21,1%%")
If "%String:~0,1%" EQU "ï" (Set "New_String=%New_String%%%Special_UTF8:~22,1%%")
If "%String:~0,1%" EQU "ö" (Set "New_String=%New_String%%%Special_UTF8:~23,1%%")
If "%String:~0,1%" EQU "ü" (Set "New_String=%New_String%%%Special_UTF8:~24,1%%")
If "%String:~0,1%" EQU "Ä" (Set "New_String=%New_String%%%Special_UTF8:~25,1%%")
If "%String:~0,1%" EQU "Ë" (Set "New_String=%New_String%%%Special_UTF8:~26,1%%")
If "%String:~0,1%" EQU "Ï" (Set "New_String=%New_String%%%Special_UTF8:~27,1%%")
If "%String:~0,1%" EQU "Ö" (Set "New_String=%New_String%%%Special_UTF8:~28,1%%")
If "%String:~0,1%" EQU "Ü" (Set "New_String=%New_String%%%Special_UTF8:~29,1%%")
If "%String:~0,1%" EQU "ñ" (Set "New_String=%New_String%%%Special_UTF8:~30,1%%")
If "%String:~0,1%" EQU "Ñ" (Set "New_String=%New_String%%%Special_UTF8:~31,1%%")
If "%String:~0,1%" EQU "ª" (Set "New_String=%New_String%%%Special_UTF8:~32,1%%")
If "%String:~0,1%" EQU "º" (Set "New_String=%New_String%%%Special_UTF8:~33,1%%")
If "%String:~0,1%" EQU "·" (Set "New_String=%New_String%%%Special_UTF8:~34,1%%")
If "%String:~0,1%" EQU "¿" (Set "New_String=%New_String%%%Special_UTF8:~35,1%%")
If "%String:~0,1%" EQU "¡" (Set "New_String=%New_String%%%Special_UTF8:~36,1%%")
If "%String:~0,1%" EQU "´" (Set "New_String=%New_String%%%Special_UTF8:~37,1%%")

::Special
If "%String:~0,1%" EQU "€" (Set "New_String=%New_String%€")
If "%String:~0,1%" EQU "\" (Set "New_String=%New_String%%%Special:~0,1%%")
If "%String:~0,1%" EQU "|" (Set "New_String=%New_String%%%Special:~1,1%%")
If "%String:~0,1%" EQU "@" (Set "New_String=%New_String%%%Special:~2,1%%")
If "%String:~0,1%" EQU "#" (Set "New_String=%New_String%%%Special:~3,1%%")
If "%String:~0,1%" EQU "~" (Set "New_String=%New_String%%%Special:~4,1%%")
If "%String:~0,1%" EQU "!" (Set "New_String=%New_String%%%Special:~5,1%%")
If "%String:~0,1%" EQU "$" (Set "New_String=%New_String%%%Special:~6,1%%")
If "%String:~0,1%" EQU "%%" (Set "New_String=%New_String%%%Special:~7,1%%")
If "%String:~0,1%" EQU "&" (Set "New_String=%New_String%%%Special:~8,1%%")
If "%String:~0,1%" EQU "/" (Set "New_String=%New_String%%%Special:~9,1%%")
If "%String:~0,1%" EQU "(" (Set "New_String=%New_String%%%Special:~10,1%%")
If "%String:~0,1%" EQU ")" (Set "New_String=%New_String%%%Special:~11,1%%")
If "%String:~0,1%" EQU "=" (Set "New_String=%New_String%%%Special:~12,1%%")
If "%String:~0,1%" EQU "?" (Set "New_String=%New_String%%%Special:~13,1%%")
If "%String:~0,1%" EQU "<" (Set "New_String=%New_String%%%Special:~14,1%%")
If "%String:~0,1%" EQU ">" (Set "New_String=%New_String%%%Special:~15,1%%")
If "%String:~0,1%" EQU ";" (Set "New_String=%New_String%%%Special:~16,1%%")
If "%String:~0,1%" EQU "," (Set "New_String=%New_String%%%Special:~17,1%%")
If "%String:~0,1%" EQU "." (Set "New_String=%New_String%%%Special:~18,1%%")
If "%String:~0,1%" EQU "-" (Set "New_String=%New_String%%%Special:~19,1%%")
If "%String:~0,1%" EQU "_" (Set "New_String=%New_String%%%Special:~20,1%%")
If "%String:~0,1%" EQU "+" (Set "New_String=%New_String%%%Special:~21,1%%")
If "%String:~0,1%" EQU "*" (Set "New_String=%New_String%%%Special:~22,1%%")
If "%String:~0,1%" EQU "[" (Set "New_String=%New_String%%%Special:~23,1%%")
If "%String:~0,1%" EQU "]" (Set "New_String=%New_String%%%Special:~24,1%%")
If "%String:~0,1%" EQU "{" (Set "New_String=%New_String%%%Special:~25,1%%")
If "%String:~0,1%" EQU "}" (Set "New_String=%New_String%%%Special:~26,1%%")
If "%String:~0,1%" EQU "`" (Set "New_String=%New_String%%%Special:~27,1%%")
If "%String:~0,1%" EQU "'" (Set "New_String=%New_String%%%Special:~28,1%%")
If "%String:~0,1%" EQU "^" (Set "New_String=%New_String%%%Special:~29,1%%")
If "%String:~0,1%" EQU ":" (Set "New_String=%New_String%%%Special:~30,1%%")

Set "String=%String:~1%"
Set /A Count+=1
Goto :Ofuscar




:Desofuscar

::Alpha
Set "String=%String:Alpha:~0,1=a%"
Set "String=%String:Alpha:~1,1=b%"
Set "String=%String:Alpha:~2,1=c%"
Set "String=%String:Alpha:~3,1=d%"
Set "String=%String:Alpha:~4,1=e%"
Set "String=%String:Alpha:~5,1=f%"
Set "String=%String:Alpha:~6,1=g%"
Set "String=%String:Alpha:~7,1=h%"
Set "String=%String:Alpha:~8,1=i%"
Set "String=%String:Alpha:~9,1=j%"
Set "String=%String:Alpha:~10,1=k%"
Set "String=%String:Alpha:~11,1=l%"
Set "String=%String:Alpha:~12,1=m%"
Set "String=%String:Alpha:~13,1=n%"
Set "String=%String:Alpha:~14,1=o%"
Set "String=%String:Alpha:~15,1=p%"
Set "String=%String:Alpha:~16,1=q%"
Set "String=%String:Alpha:~17,1=r%"
Set "String=%String:Alpha:~18,1=s%"
Set "String=%String:Alpha:~19,1=t%"
Set "String=%String:Alpha:~20,1=u%"
Set "String=%String:Alpha:~21,1=v%"
Set "String=%String:Alpha:~22,1=w%"
Set "String=%String:Alpha:~23,1=x%"
Set "String=%String:Alpha:~24,1=y%"
Set "String=%String:Alpha:~25,1=z%"
Set "String=%String:Alpha:~26,1=A%"
Set "String=%String:Alpha:~27,1=B%"
Set "String=%String:Alpha:~28,1=C%"
Set "String=%String:Alpha:~29,1=D%"
Set "String=%String:Alpha:~30,1=E%"
Set "String=%String:Alpha:~31,1=F%"
Set "String=%String:Alpha:~32,1=G%"
Set "String=%String:Alpha:~33,1=H%"
Set "String=%String:Alpha:~34,1=I%"
Set "String=%String:Alpha:~35,1=J%"
Set "String=%String:Alpha:~36,1=K%"
Set "String=%String:Alpha:~37,1=L%"
Set "String=%String:Alpha:~38,1=M%"
Set "String=%String:Alpha:~39,1=N%"
Set "String=%String:Alpha:~40,1=O%"
Set "String=%String:Alpha:~41,1=P%"
Set "String=%String:Alpha:~42,1=Q%"
Set "String=%String:Alpha:~43,1=R%"
Set "String=%String:Alpha:~44,1=S%"
Set "String=%String:Alpha:~45,1=T%"
Set "String=%String:Alpha:~46,1=U%"
Set "String=%String:Alpha:~47,1=V%"
Set "String=%String:Alpha:~48,1=W%"
Set "String=%String:Alpha:~49,1=X%"
Set "String=%String:Alpha:~50,1=Y%"
Set "String=%String:Alpha:~51,1=Z%"

::Numeric
Set "String=%String:Numeric:~0,1=0%"
Set "String=%String:Numeric:~1,1=1%"
Set "String=%String:Numeric:~2,1=2%"
Set "String=%String:Numeric:~3,1=3%"
Set "String=%String:Numeric:~4,1=4%"
Set "String=%String:Numeric:~5,1=5%"
Set "String=%String:Numeric:~6,1=6%"
Set "String=%String:Numeric:~7,1=7%"
Set "String=%String:Numeric:~8,1=8%"
Set "String=%String:Numeric:~9,1=9%"

::Special_UTF8
Set "String=%String:Special_UTF8:~0,1=...%"
Set "String=%String:Special_UTF8:~1,1=,%"
Set "String=%String:Special_UTF8:~2,1=¡%"
Set "String=%String:Special_UTF8:~3,1=¢%"
Set "String=%String:Special_UTF8:~4,1=£%"
Set "String=%String:Special_UTF8:~5,1=...%"
Set "String=%String:Special_UTF8:~6,1=Š%"
Set "String=%String:Special_UTF8:~7,1=Ö%"
Set "String=%String:Special_UTF8:~8,1=•%"
Set "String=%String:Special_UTF8:~9,1=—%"
Set "String=%String:Special_UTF8:~10,1=µ%"
Set "String=%String:Special_UTF8:~11,1=,%"
Set "String=%String:Special_UTF8:~12,1=Ö%"
Set "String=%String:Special_UTF8:~13,1=à%"
Set "String=%String:Special_UTF8:~14,1=é%"
Set "String=%String:Special_UTF8:~15,1=·%"
Set "String=%String:Special_UTF8:~16,1=Ô%"
Set "String=%String:Special_UTF8:~17,1=Þ%"
Set "String=%String:Special_UTF8:~18,1=ã%"
Set "String=%String:Special_UTF8:~19,1=ë%"
Set "String=%String:Special_UTF8:~20,1=Ž%"
Set "String=%String:Special_UTF8:~21,1=‰%"
Set "String=%String:Special_UTF8:~22,1=‹%"
Set "String=%String:Special_UTF8:~23,1="%"
Set "String=%String:Special_UTF8:~24,1=š%"
Set "String=%String:Special_UTF8:~25,1=Ž%"
Set "String=%String:Special_UTF8:~26,1=Ó%"
Set "String=%String:Special_UTF8:~27,1=Ø%"
Set "String=%String:Special_UTF8:~28,1=™%"
Set "String=%String:Special_UTF8:~29,1=š%"
Set "String=%String:Special_UTF8:~30,1=¤%"
Set "String=%String:Special_UTF8:~31,1=¥%"
Set "String=%String:Special_UTF8:~32,1=^ª%"
Set "String=%String:Special_UTF8:~33,1=§%"
Set "String=%String:Special_UTF8:~34,1=^·%"
Set "String=%String:Special_UTF8:~35,1=¿%"
Set "String=%String:Special_UTF8:~36,1=­%"
Set "String=%String:Special_UTF8:~37,1=ï%"

::Special
Set "String=%String:Special:~0,1=^\%"
Set "String=%String:Special:~1,1=^|%"
Set "String=%String:Special:~2,1=@%"
Set "String=%String:Special:~3,1=#%"
Set "String=%String:Special:~4,1=^~%"
Set "String=%String:Special:~5,1=^^^!%"
Set "String=%String:Special:~6,1=$%"
Set "String=%String:Special:~7,1=€%"
Set "String=%String:Special:~8,1=^&%"
Set "String=%String:Special:~9,1=/%"
Set "String=%String:Special:~10,1=(%"
Set "String=%String:Special:~11,1=)%"
Set "String=%String:Special:~12,1==%"
Set "String=%String:Special:~13,1=?%"
Set "String=%String:Special:~14,1=^<%"
Set "String=%String:Special:~15,1=^>%"
Set "String=%String:Special:~16,1=;%"
Set "String=%String:Special:~17,1=,%"
Set "String=%String:Special:~18,1=.%"
Set "String=%String:Special:~19,1=-%"
Set "String=%String:Special:~20,1=_%"
Set "String=%String:Special:~21,1=+%"
Set "String=%String:Special:~22,1=*%"
Set "String=%String:Special:~23,1=^[%"
Set "String=%String:Special:~24,1=^]%"
Set "String=%String:Special:~25,1={%"
Set "String=%String:Special:~26,1=}%"
Set "String=%String:Special:~27,1=`%"
Set "String=%String:Special:~28,1='%"
Set "String=%String:Special:~29,1=^^^^%"
Set "String=%String:Special:~30,1=:%"

Echo string "%STRING%"
Call :Write_Desofuscador




:Write_Ofuscador
Set "New_String=%New_String:€="%"& rem "
Echo %New_String%>>"Script Ofuscado con BatOfuser.bat"
If NOT Errorlevel 0 (Echo ERROR & pause & Exit /B 1)
Set "New_String="
Set "Count="
Goto :EOF


:Write_Desofuscador
Echo %String%>>"%TEMP%\Batofuser_DESOFUSCAR_.bat"
If NOT Errorlevel 0 (Echo ERROR & pause & Exit /B 1)
Set "String="
If "%linea%" EQU "%total%" (Goto :Fin_Desofuscador)
Goto :Leer_Desofuscador


:Fin_Ofuscador
Echo REM By Elektro H@cker >> "Script Ofuscado con BatOfuser.bat"
Del /Q "%TEMP%\String.tmp"
Cls
echo Fin | More
pause
Exit


:Fin_Desofuscador
CLS
setlocal enabledelayedexpansion
Set "String=!String:%%=!"
Set "String=!String:€=%%!"

For /F "Tokens=*" %%a in ('Type "%TEMP%\Batofuser_DESOFUSCAR_.bat"') do (
   Set "String=%%a"
   Set "String=!String:%%=!"
   echo !String!
   Set "String=!String:€=%%!"
   Echo !String!>>"Script Desofuscado con BatOfuser.bat"
)
Del /Q "%TEMP%\Batofuser_DESOFUSCAR_.bat"
echo Fin | More
Pause
Exit
#910
Hola

Lo que necesito es eliminar el caracter "%".

Lo he intentado de todas las maneras que se me ha ocurrido... Escapando, Expandiendo, Usando 2 porcentages, 3, 4.. y volviendo a escapar xD...

Creo que no es posible reemplazar el caracter "%" ni el "~"

¿Alguien sabe si se puede hacer?

Código (dos) [Seleccionar]
@Echo OFF
Set "String=%%Special:~2,1%%"
Echo Antes  :  %String%
Set "String=%String:%=%"
Echo Despues:  %String%
Pause >nul
Exit


Este es el resultado que busco:



Gracias...
#911
Buenas

Me gustaría poder contactar contigo Alex, Bueno, Solo busco una respuesta a 2 o 3 mp's que te he ido mandando en los últimos meses, nada más

El problema es que no se si has llegado a leerlos.

Si los has leido ya capto la indirecta xD y entendería que este post que acabo de hacer es una tontería, Pero como no he tenido respuesta de ti en nínguno de esos mp no se si debo dejarme llevar por la intuición... Puedo estar equivocado.

"Jopé", Todos nos merecemos al menos una respuesta...

Si no has podido leerlos dimelo y mando un email

PD: No he querido molestar mandando un email al staff preguntandote esto porque no se si lo que te dije en el mp es que no te interesaba o es que nunca llegaste a poder leer mis mp  >:(

     Crear este post es lo menos molesto que se me ocurre.
 
     Tampoco busco crear polémica con este post (Me extrañaria que hubiese alguna...) pueden cerrar este post si quieren, yo con que el brujo lo léa me conformo.

Un saludo!
#912
SHACK
An Imageshack commandline uploader.

By Elektro H@cker.

Esto no es más que la versión compilada del script para usarla desde la CMD sin necesidad del intérprete de Ruby. (Bueno, más o menos xD)
El code original lo posteé en este topic: http://foro.elhacker.net/scripting/aporte_ruby_shack_imageshack_uploader-t356878.0.html






IMPORTANTE:
Para usar este script necesitan obtener una developer key (No es un capricho mio), Simplemente rellenen este formulario y enseguida recibiran un email con la clave:
http://stream.imageshack.us/api/

Luego hay que introducirla (Una única vez) usando el script de tal forma:
shack.exe -k "CLAVE"

Y ya podrán disfrutar del libre uso de este script.  ;D




CitarModo de empleo:
shack.exe [Opción] [Imagen]

Ejemplo:
shack.exe -d C:\Test.jpg

Opciones:
-a --all
     Devuelve el enlace de la imagen en todos los formatos.
-b --bb
     Devuelve el enlace de la imagen en formato BB.
-d --directo
     Devuelve el enlace directo a la imagen.
-h --html
     Devuelve el enlace de la imagen en formato HTML.
-t --thumb
     Devuelve el thumb de la imagen.
-k --key
     Establece su Developer key.
/?   Muestra esta ayuda.





El archivo lo he subido aqui:



Es un autoextraible de Winrar, Se instala SHACK y una opción en el menú contextual para subir imagenes desde el menú contextual de Windows.

Por otro lado, Si no les interesa lo del menú y solo quieren la aplicación, Descompriman el .RAR y guarden el archivo "shack.exe" donde quieran :)



#913
SHACK
An Imageshack commandline uploader.

By Elektro H@cker.


Todas las tools y scripts que conozco para subir una imagen, como por ejemplo "shag" ya no funcionan por culpa de la developer key, Así que debido a la falta de un uploader para imageshack por línea de comandos he querido hacer este útil script.

Espero que os guste y si encontrais fallos o mejoras hagánmelo saber, Gracias.




IMPORTANTE:
Para usar este script necesitan obtener una developer key (No es un capricho mio), Simplemente rellenen este formulario y enseguida recibiran un email con la clave:
http://stream.imageshack.us/api/

Luego hay que introducirla (Una única vez) usando el script de tal forma:
shack.rb -k "CLAVE"

Y ya podrán disfrutar del libre uso de este script.  ;D




CitarModo de empleo:
shack.rb [Opción] [Imagen]

Ejemplo:
shack.rb -d C:\Test.jpg

Opciones:
-a --all
     Devuelve el enlace de la imagen en todos los formatos.
-b --bb
     Devuelve el enlace de la imagen en formato BB.
-d --directo
     Devuelve el enlace directo a la imagen.
-h --html
     Devuelve el enlace de la imagen en formato HTML.
-t --thumb
     Devuelve el thumb de la imagen.
-k --key
     Establece su Developer key.
/?   Muestra esta ayuda.






Código (ruby) [Seleccionar]
# -*- coding: UTF-8 -*-



# Modulos

require 'rest_client'
exit if Object.const_defined?(:Ocra)



# Metodos

def logo()
 print "
    @@
   @   @                  
  @    @      @@@   @@@  @   @
   @   @         @ @   @ @  @
    @  @ @@      @ @     @ @
     @ @@  @  @@@@ @     @@
     @ @   @ @   @ @     @ @
 @  @  @   @ @   @ @   @ @  @
  @@   @   @  @@@@  @@@  @   @


                               By Elektro H@cker\n\n"
end

def help()
 print "\n Modo de empleo:\n\n"
 print "  " + __FILE__.split('/').last + " [Opci\u00F3n] [Imagen]\n\n"
 print "\n Ejemplo:\n\n"
 print "  " + __FILE__.split('/').last + " -d C:\\Test.jpg \n\n"
 print "\n Opciones: \n\n"
 print "  -a --all \n       Devuelve el enlace de la imagen en todos los formatos. \n\n"
 print "  -b --bb \n       Devuelve el enlace de la imagen en formato BB. \n\n"
 print "  -d --directo \n       Devuelve el enlace directo a la imagen. \n\n"
 print "  -h --html \n       Devuelve el enlace de la imagen en formato HTML. \n\n"
 print "  -t --thumb \n       Devuelve el thumb de la imagen. \n\n"
 print "  -k --key \n       Establece su Developer key. \n\n"
 print "  /?   Muestra esta ayuda. \n\n"
 Process.exit
end

def keycode(imput)
if ARGV[1] == () or not imput.length.eql? 40
  puts "\n Porfavor introduzca una developer key válida..."
  puts "\n Ejemplo:\n\n " + __FILE__.split('/').last + " --key 148CAPSV9465b858a45dc1b4cdb32dee95ff6f59 \n\n"
  puts "\n Para más información, Visite: http://stream.imageshack.us/api/"
  Process.exit
 end # length

if File.exist?("key")
  oldkey = File.read('key')
  print "\n ¿Desea reemplazar el archivo que contiene su developer key?\n\n"
  print " Clave anterior: " + oldkey
  print "\n Clave nueva   : " + imput
  print  "\n\n [SI/NO] \n\n>> "
  $sino = STDIN.gets
   if $sino[/si/i]
     keyfile = File.new("key", "w")
     keyfile.print(imput)
     print "\nClave reemplazada correctamente.\n"
   elsif $sino[/no/i]
     Process.exit
   elsif
     keycode(imput)
   end # Reemplazar
 else
     keyfile = File.new("key", "w")
     keyfile.print(imput)
     print "\nClave configurada correctamente.\n"
end # File exist
end

def subir(file)
print "\n Subiendo la imagen, Espere...\n\n"
$Imagen = RestClient.post('http://www.imageshack.us/upload_api.php',
  :key => $devkey,
#  :a_username => "USUARIO",
#  :a_password => "PASSWORD",
  :fileupload => File.new(file)
)
end

def show(opcion)
 if opcion == "-d" or opcion == "--directo"
   print $Imagen.split("<image_link>").last.split("</image_link>").first + "\n"
 elsif opcion == "-b" or opcion == "--bb"
   print $Imagen.split("<image_bb>").last.split("</image_bb>").first + "\n"
 elsif opcion == "-h" or opcion == "--html"
   print $Imagen.split("<image_html>").last.split("</image_html>").first.gsub("&gt;", ">").gsub("&lt;", "<").gsub("&quot;", "'") + "\n"
 elsif opcion == "-t" or opcion == "--thumb"
   print $Imagen.split("<thumb_link>").last.split("</thumb_link>").first + "\n"
 elsif opcion == "-a" or opcion == "--all"
   print "\nDirecto: \n" + $Imagen.split("<image_link>").last.split("</image_link>").first + "\n\n"
   print "BB Forum: \n" + $Imagen.split("<image_bb>").last.split("</image_bb>").first + "\n\n"
   print "HTML: \n" + $Imagen.split("<image_html>").last.split("</image_html>").first.gsub("&gt;", ">").gsub("&lt;", "<").gsub("&quot;", "'") + "\n\n"
   print "Thumb: \n" + $Imagen.split("<thumb_link>").last.split("</thumb_link>").first + "\n"
 end
Process.exit
end



# Control de errores

logo()

if ARGV[0] == "-k" or ARGV[0] == "--key"
 keycode(ARGV[1])
 Process.exit
end

if not File.exist?("key")
 print "\n ERROR.   Debe configurar su developer key para usar este programa...\n"
 puts "\n Ejemplo:\n\n " + __FILE__.split('/').last + " --key 148CAPSV9465b858a45dc1b4cdb32dee95ff6f59 \n\n"
 puts "\n Para más información, Visite: http://stream.imageshack.us/api/"
 Process.exit
elsif
 $devkey = File.read('key')
end

if (ARGV.empty?) or ARGV[0] == "/?"
 help()
end

if (ARGV[1])==()
 print "\n ERROR.   Debe introducir la ruta local de la imagen...\n"
 Process.exit
end

if not File.exist?(ARGV[1])
 print "\n ERROR.   La imagen no existe...\n"
 Process.exit
elsif not (ARGV[1].split('.').last)[/bmp\z/i] and not (ARGV[1].split('.').last)[/bmp\z/i] and not (ARGV[1].split('.').last)[/gif\z/i] and not (ARGV[1].split('.').last)[/ico\z/i] and not (ARGV[1].split('.').last)[/jpg\z/i] and not (ARGV[1].split('.').last)[/jpeg\z/i] and not (ARGV[1].split('.').last)[/png\z/i] and not (ARGV[1].split('.').last)[/tif\z/i] and not (ARGV[1].split('.').last)[/tiff\z/i]
   print "\n ERROR.   Archivo de imagen no soportado...\n"
   print "\n Formatos soportados: .BMP, .GIF, .ICO, .JPG, .JPEG, .PNG, .TIF, .TIFF\n"
 Process.exit
end

if not ARGV[0] == "-d" and not ARGV[0] == "--directo" and not ARGV[0] == "-a" and not ARGV[0] == "--all" and not ARGV[0] == "-b" and not ARGV[0] == "--bb" and not ARGV[0] == "-h" and not ARGV[0] == "--html" and not ARGV[0] == "-t" and not ARGV[0] == "--thumb"
 print "\n ERROR.   Opcion incorrecta...\n\n"
 print " Use la opcion [/?] para mostrar la ayuda. \n\n"
 print " " +__FILE__.split('/').last +  " /?  \n"
 Process.exit
end



# Proceso

subir(ARGV[1])
show(ARGV[0])
#914
Python 2.7.2 (64 Bit) Portable Auto-Instalable FULL para Windows        

by Elektro H@cker





No hay mucho que decir :P, Se instala en "C:\Archivos de programa (x86)\Python" y lleva un desinstalador.

IMPORTANTE: Ejecutarlo como administrador, Hay 3 dlls de python que se deberán copiar en "...Windows\System32\".  Pueden abrir el .exe con WinRar y copiarlas manualmente...

- Es la instalación completa, Lleva el paquete de "Test", El IDLE, el TKinter, Los scripts, TODO.

- También lleva el "cxfreeze" para compilar scripts.

- Los archivos de python están asociados a Python.exe tal como lo hace el instalador oficial.

- Para ejecutar un script simplemente darle doble click a el, o en consola: "Script.py", o "Python.exe Script.py"

- Para abrir el IDLE simplemente poner en consola "IDLE", O ir a la carpeta de Python y hacer un acceso directo donde querais al archivo "IDLE.bat" de esa misma carpeta.

- Además le he agregado un icono personalizado para los archivos de extensión .py .pyc .pyo y .pyw.

- Y una opción en el menú contextual para compilar rápidamente un .py o un .pyw:



PD: Hay un "Setup.py" de ejemplo en la carpeta de Python.


Salu2!


EDITO: Tuve un pequeño fallo con el registro de la opción "Compilar", No funcionaba con nombres con espacio.  Aqui tienen el FIX

Compilar_FIXED.reg

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Python.File\Shell\Compilar\command]
@="CMD /k python.exe \"C:\\Program Files (x86)\\Python\\Scripts\\cxfreeze\" \"%1\" --target-dir \"PYTHON_Compilado\" && echo+ && echo+ && echo+ Script compilado! && ping -n 3 localhost >nul & Exit"

[HKEY_CLASSES_ROOT\Python.NoConFile\Shell\Compilar\command]
@="CMD /k python.exe \"C:\\Program Files (x86)\\Python\\Scripts\\cxfreeze\" \"%1\" --target-dir \"PYTHON_Compilado\" && echo+ && echo+ && echo+ Script compilado! && ping -n 3 localhost >nul & Exit"
#915
Hola, Estoy intentando aprender este tipo de cosas, tengo hecho este script (Lo saque de un code de Doddy y lo he modificado un poco) pero no me funciona, El archivo no se sube, Y el script no me da error, No muestra el "except"...

Son 2 problemas xD

¿Que estoy haciendo mal?


Código (python) [Seleccionar]

import urllib2,sys,re

nave = urllib2.build_opener()
nave.add_header = [('User-Agent','Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5')]

def tomar(web,vars) :
return nave.open(web,vars).read()
()

def chubir():
print "[+] Uploading file\n"
try:
 code = tomar("http://www.imageshack.us/upload_api.php","key=268BEKSV9465b858a45cd1b4d2b32d1195ee6f27","a_username=elektrohacker","a_password=MIPASSWORD","fileupload=C:/1.jpg")
 #code = tomar("http://www.imageshack.us/upload_api.php","fileupload="+str(lin)+"&submit=submit")
except:
 print "[-] Page offline\n"
if re.findall("Bad API request",code):
 print "[-] Error uploading file\n"
else:
 print "[+] Enjoy : ",code+"\n"
()

chubir()

# Fin



EDITO:
También lo he intentado por Ruby, Que me resultaría más fácil porque lo conozco un poco más que Python:

Código (ruby) [Seleccionar]
require "net/http"

def tomar(web,par)
 return Net::HTTP.post_form(URI.parse(web),par).body
end

def subir()
 print "[+] Uploading file\n\n"

 code = tomar("http://www.imageshack.us/upload_api.php",{"fileupload"=>"C:/1.jpg","key"=>"268BEKSV9465b858a45cd1b4d2b32d1195ee6f27","submit"=>"submit"})
 # code = tomar("http://www.imageshack.us/upload_api.php",{"fileupload"=>ARGV[1],"key"=>"268BEKSV9465b858a45cd1b4d2b32d1195ee6f27","submit"=>"submit"})

 print "[+] Enjoy : "+code+"\n"
end

subir()


Me da este error:
<error id="parameter_missing">Sorry, but we've detected that unexpected data is
received. Required parameter 'fileupload' is missing or your post is not multipa
rt/form-data</error>
</links>


Se que estoy intentando por el método POST, Pero en la documentación de Imageshack pone que se puede por POST, Y no se como hacer la conexión para multipart...


También lo he intentado con curl para Windows:
Código (dos) [Seleccionar]
curl.exe -F xml=yes -F "fileupload=c:\1.jpg" http://www.imageshack.us/index.php

Me dice que necesito introducir la developer key, Pero no se como ponerla, con que sintaxis en curl...





Porfavor, Si alguien además me pudiera ayudar con los parámetros de la API, O simplemente decirme si lo estoy haciendo bien o no los parámetros de la APi se lo agradecerñia mucho, Aquí está la info:


CitarUnified API entry point is: http://www.imageshack.us/upload_api.php for images

Supported parameters are:

fileupload; (input type="file") - image or video file. Mandatory unless url parameter is specified.
frmupload; (input type="file") - video default frame picture. Optional, used only for video upload.
url; This parameter indicates that transload method is used instead of upload
optsize; resize options for image in form WxH if image is uploaded/transloaded. No impact on video uploads.
rembar; Developer could tell to ImageShack to leave/remove information bar on thumbnail image generated by ImageShack . If you've supplied this parameter as yes or as 1 then generated thumbmail will have no information bar.
tags; A comma-separated list of tags to add to your video/image. E.g. family,picture. Optional
public; Public/private marker of your video/picture. yes means public (default), no means private. Optional
cookie; Registration code, optional.
a_username; Username, optional.
a_password; Password, optional.
key; Your DeveloperKey. Mandatory.
#916
Hola

Necesito conseguir que findstr encuentre 2 (o más) coincidencias del mismo caracter.

Si nos paramos a leer la ayuda...

Expresión regular de referencia rápida:
 *        Repetir: cero o más ocurrencias de un carácter previo o de clase


Pero esto no me funciona:

Código (dos) [Seleccionar]
Echo "nombre1 - nombre2 - nombre3" | Findstr /R "\-\*\-\"

¿Alguien sabe la sintaxis correcta?

EDITO: ya está:

Código (dos) [Seleccionar]
Echo "nombre1 - nombre2 - nombre3" | Findstr /R "\-.*.\-"

El problema ahora es que no se como hacerlo más eficiente, Para que solo busque 2 coincidencias, No más, Si encuentra más, Se lo salte..

Lo que quiero decir, Es que por ejemplo limitar este comando a buscar solamente 2 coincidencias...
Código (dos) [Seleccionar]
Echo "nombre1 - - - - -" | Findstr /R "\-.*.\-"

El findstr lo da por válido, Y no quiero que así séa, ya que hay 5 coincidencias, No 2.
#917
Scripting / Interfaces gráficas
12 Marzo 2012, 10:39 AM
Hola

Me gustaría saber que interfaces gráficas existen para usar con un lenguaje Scripting.

Y a ser posible, La que piensen que es la más fácil de codear, Y la más documentada...

Solo conozco GTK, Pero debe haber más.

saludos
#918
No se si esta es la sección adecuada para esta pregunta jeje

Necesito limitar la velocidad de descarga solamente en las descargas de Firefox...

He buscado y lo único que encuentro es el plugin Firefox Throttle, Que ya no es compatible, Y el "Compatibility reporter" (Para instalar addons incompatibles en Firefox) támpoco es compatible ya...

Y programas como NetLimiter...  No me hacen mucha gracia.

También he buscado sobre los parámetros del "about:config" en firefox, y según he leido solo se puede limitar las máximas conexiones pero nada que ver...

¿Alguien sabe como puedo hacerlo entonces?
#919
Según he leido en esta página, al utilizar openDNS se debería poder navegar mucho más rápido por las cosas que explican...

http://tweaks.com/windows/39287/speed-up-web-browsing-with-opendns/


¿Es cierto?
¿Vale la pena?


#920
Hola...

Necesito obtener el nombre de un proceso sabiendo unicamente el "Window Handle" (HWND) de su ventana principal o de una de sus ventanas.

Sé que esto se puede hacer con la Win32API, Pero en todo el MSDN no encuentro info acerca de esos parámetros tan raros que usa...
Y además ya me he visto varios ejemplos por Google , En C, VB, y Ruby, que hacen algo parecido, Pero no me entero de nada la verdad...

Agradecería una ayuda por aqui

saludos!!

EDITO: ah por cierto, el HWND lo obtengo con la win32/api (no win32api), es un número integro, No es hexadecimal, pero me sirve en los dos casos, es muy fácil convertirlo en ruby...
#921
Ruby 1.9.3 portable auto-instalable para Windows        

by Elektro H@cker





No hay mucho más que decir :P, Se instala en "C:\Archivos de programa\" (Tanto en x64 como x86) y lleva un desinstalador.

Lleva algunas gemas:
Ocra
Colored

Y 2 o 3 que no recuerdo xD

Funciona todo igual que una instalacion normal de ruby:

En consola:
Código (dos) [Seleccionar]
gem install NOMBRE
Código (dos) [Seleccionar]
ruby script.rb
Código (dos) [Seleccionar]
Ocra script.rb
Código (dos) [Seleccionar]
irb
etc...

Además le he agregado un icono personalizado para los archivos .rb y .rbw, y una opción en el menú contextual, esta:

#922
Hola amigos

A ver, se abrir una instancia de la CMD de 3 maneras y se recibir el código de salida

Código (ruby) [Seleccionar]
puts %x[Tasklist /v | Find "%tmp:~0,30%" >NUL]
response = $?.exitstatus


Eso me funciona.

Pero ahora necesito abrir la consola en modo oculto (Y solo se hacerlo con el modulo Win32ole), y entonces el exitstatus me manda error , no se porque:(:

Código (ruby) [Seleccionar]
require 'win32ole'
shell = WIN32OLE.new('Shell.Application')

shell.ShellExecute('CMD', '/K Tasklist /v | Find "%tmp:~0,30%" >NUL', '', '', 0)
response = $?.exitstatus
if response == 0
 puts "hola"
 end


undefined method `exitstatus' for nil:NilClass (NoMethodError)


EDITO: Esto tampoco me funciona:

Código (ruby) [Seleccionar]
require 'win32ole'
$shell = WIN32OLE.new('Shell.Application')
$shell.ShellExecute('CMD', '/c echo aaaa & pause', '', '', 1)
$!.is_a?(win32ole)
puts $!.exited?


`is_a?': class or module required (TypeError)

EDITO2: esto támpoco xD

Código (ruby) [Seleccionar]
require 'win32ole'
$shell = WIN32OLE.new('Shell.Application')
output = $shell.ShellExecute('CMD', '/c echo aaaa & echo %errorlevel%', '', '', 1)
p output


(El caso es que con "system" si funciona  :-( )
#923
MoveIt     By Elektro H@cker

SO: Windows

Agradecimientos para "kicasta" y "RyogiShiki".


Descripción:
Mueve archivos desde un punto de origen hasta un punto de destino.
Está pensado para usarlo como complemento del "SendTo" de Windows, El cual no mueve archivos de un disco duro a otro.



Instrucciones:

1º Crear un acceso directo a una carpeta.





2º Abrir las propiedades del aceso directo.




3º Añadir la ruta de este script a la propiedad "Destino".



Ejemplo destino:                                       Ruby C:\Windows\MoveIt.rb "C:\Nueva carpeta"
Ejemplo destino (Script compilado a .exe): C:\Windows\System32\MoveIt.exe "C:\Nueva carpeta"


4º (Opcional) Guardar el acceso directo modificado en la carpeta "SendTo" (C:\Users\USUARIO\AppData\Roaming\Microsoft\Windows\SendTo)







NOTAS:

Este script requiere el uso de argumentos. (Uno para la ruta de destino y el otro para el/los archivo(s) a mover.)

Si la carpeta de destino no existe, se pregunta para crearla o no. (Si no se crea, no se pueden copiar los archivos y se cancelará el programa xD)



Si el archivo de destino ya existe, Se pregunta por su reemplazamiento.



Si el archivo está siendo usado por el sistema, Se da lugar a reintentar o cancelar la operación.



Si el archivo de origen contiene el caracter ilegal "–" (u2013) se reemplaza por el caracter "-"

En equipos de 64 Bit,Hay que copiar el compilado (.exe) tanto a la carpeta "System32" como "SysWOW64" Si se quiere usar la propiedad "Destino" de la siguiente forma en el acceso directo:





El script compilado (No muestra la consola):

EDITADO: 07/03/2012

http://www.mediafire.com/?clyzd39xxlxzn0d



El script:

EDITADO: 07/03/2012


Código (RUBY) [Seleccionar]
# -*- coding: UTF-8 -*-


# MoveIt   v1.0  By Elektro H@cker
#
# SO: Windows
# Agradecimientos para "kicasta" y "RyogiShiki".


# Descripción:
# Mueve archivos desde un punto de origen hasta un punto de destino.
# Está pensado para usarlo como complemento del "SendTo" de Windows, El cual no mueve archivos de un disco duro a otro.


# Modo de empleo:
#
# 1º Crear un acceso directo a una carpeta.
# 2º Abrir las propiedades del aceso directo.
# 3º Añadir la ruta de este script a la propiedad "Destino".
#
# Ejemplo destino: Ruby C:\\MoveIt.rb "E:\Nueva carpeta"
# Ejemplo destino (Script compilado a .exe): C:\MoveIt.exe "E:\Nueva carpeta"
#
# 4º (Opcional) Guardar el acceso directo modificado en la carpeta "SendTo" (C:\Users\USUARIO\AppData\Roaming\Microsoft\Windows\SendTo)
#


# Notas:
#
# Este script requiere el uso de argumentos. (Uno para la ruta de destino y el otro para el/los archivo(s) a mover.)
#
# Si la carpeta de destino no existe, se pregunta para crearla o no. (Si no se crea, no se pueden copiar los archivos xD)
# Si el archivo de destino ya existe, Se pregunta por su reemplazamiento.
# Si el archivo está siendo usado por algún proceso abierto, Se da lugar a reintentar o cancelar la operación.
#
# En equipos de 64 Bit,Hay que copiar el compilado (.exe) tanto a la carpeta "System32" como "SysWOW64" Si se quiere usar la propiedad "Destino" de la siguiente forma en el acceso directo:
# MoveIt "C:\Nueva carpeta"


# RECORDATORIO
#
# Caracteres ilegales
#
# á : .gsub("ß", "á")
# é : .gsub("Ú", "é")
#  í : .gsub("Ý", "í")
# ó : .gsub("¾", "ó")
# ú : .gsub("·", "ú")
# ¿ : .gsub("┐", "\u00BF")
# – : .gsub("\û", "\u2013")
#  ´ : .gsub("\┤", "\u00B4")
#  · : .gsub("\À", "\u00B7")
# ¬ : .gsub("\¼", "\u00AC")
#  º : .gsub("\║", "\u00BA")
#  ª : .gsub("\¬", "\u00AA")
#
#  ¡  : FAIL    :(
#   ' : FAIL    :(
#
# Convertir Handle a Hex
# puts 1272.to_s 16
# 0x + HandleHEX



# Modulos

require 'dl'
require "FileUtils"
require 'win32ole'
require 'win32/api'
include Win32

exit if Object.const_defined?(:Ocra)



# Variables globales y constantes

if ARGV.empty? == false
$DIR = (ARGV[0].encode('utf-8').gsub("ß", "á").gsub("Ú", "é").gsub("Ý", "í").gsub("¾", "ó").gsub("·", "ú").gsub("┐", "\u00BF").gsub("\û", "\u2013").gsub("┤", "\u00B4").gsub("\À", "\u00B7").gsub("\¬", "\u00AA").gsub("\¼", "\u00AC").gsub("\║", "\u00BA"))
$DIRMSG = (ARGV[0].encode('utf-8').gsub("\û", "-").gsub("ß", "a").gsub("Ú", "e").gsub("Ý", "i").gsub("¾", "o").gsub("·", "u").gsub("┐", "?"))
end

EnumWindows = API.new('EnumWindows', 'KP', 'L', 'user32')
GetWindowText = API.new('GetWindowText', 'LPI', 'I', 'user32')

KILOBYTE = 1024.0
MEGABYTE = 1024.0 * 1024.0

BUTTONS_OKCANCEL = 1
BUTTONS_YESNO = 4
CLICKED_CANCEL = 2
CLICKED_YES = 6
CLICKED_NO = 7



# Metodos

def help()
 print "\nSe requiere al menos 1 archivo de origen.\n\n\n"
 print "Modo de empleo: \n\n"
 print ' MoveIt.rb [Destino] [Archivo de origen 1] [Archivo de origen 2] [etc...]' + "\n\n\n"
 print ' Ejemplo: (Mover tres archivos al directorio de destino "C:"' + "\n\n"
 print ' MoveIt.rb "C:\" "D:\Archivo1.txt" "E:\Archivo2.jpg" "F:\Archivo3.mp3"' + "\n\n"
 Process.exit
end

def bytesToUnit size1, size2
 $Kilos1 = (size1 /  KILOBYTE).to_s
 $Megas1 = (size1 /  MEGABYTE).to_s
 $Kilos2 = (size2 /  KILOBYTE).to_s
 $Megas2 = (size2 /  MEGABYTE).to_s

 if ($Megas1[0]).eql? '0' or $Megas1["-"]
    if ($Kilos1[0]).eql? '0'
      $finalsize1 = size1.to_s + ' Bytes'
     elsif
       $finalsize1 = $Kilos1.split('.').first + "." + $Kilos1.split('.').last[0,1] + " Kb"
   end
 else
     $finalsize1 = $Megas1.split('.').first + "." + $Megas1.split('.').last[0,1] + " Mb"
  end # size1

 if ($Megas2[0]).eql? '0' or $Megas2["-"]
    if ($Kilos2[0]).eql? '0'
      $finalsize2 = size2.to_s + ' Bytes'
     elsif
       $finalsize2 = $Kilos2.split('.').first + "." + $Kilos2.split('.').last[0,1] + " Kb"
   end
 else
     $finalsize2 = $Megas2.split('.').first + "." + $Megas2.split('.').last[0,1] + " Mb"
 end # size2
end

def date (file1, file2)
 $CDate1 = (File.ctime(file1)).to_s
 $CDate2 = (File.ctime(file2)).to_s
 $MDate1 = (File.mtime(file1)).to_s
 $MDate2 = (File.mtime(file2)).to_s
end

def message_box(txt, title='', buttons='')
 user32 = DL.dlopen('user32')
 msgbox = DL::CFunc.new(user32['MessageBoxA'], DL::TYPE_LONG, 'MessageBox')
 r, rs = msgbox.call([0, txt, title, 3].pack('L!ppL!').unpack('L!*'))
 return r
end

def reintentar(source_file, dest_file)

 $seguro = 'si'
 
 if $proceso == nil
   $proceso = 'DESCONOCIDO'
 end # if

 response = message_box("\n" +
   "El proceso '" + $proceso + "' Tiene abierto el archivo: \n\n" + $archivo  + "\n\n\n" +
   "Reintentar?",
   "Reintentar?",
   BUTTONS_OKCANCEL)
   if response == CLICKED_YES
  Access($archivoUTF8, $DIR)
   elsif response == CLICKED_NO
     $no = "si"
     nil
   elsif response == CLICKED_CANCEL
     exit
   end # response

end

def moverlo()
 @EnumWindowsProc = API::Callback.new('LP', 'I'){ |handle, param|
  buf = "\0" * 200
  GetWindowText.call(handle, buf, 200);

 if (!buf.index(param).nil?)
   $seguro = 'no'
   0
 else
   $seguro = 'si'
   1
 end # if
}
EnumWindows.call(@EnumWindowsProc, $archivo.split('\\').last[0..-6])
 if $seguro == 'si'
   FileUtils.mv $archivoUTF8, $DIR
 elsif
   reintentar($archivoUTF8, $DIR)
 end # seguro
end


def Access(source_file, dest_file)
begin
 wmi = WIN32OLE.connect("winmgmts://")
 processes = wmi.ExecQuery("select * from win32_process")

 for process in processes do
   caption = (process.Commandline).to_s
     if not caption['ruby'] and not caption['MoveIt.exe']
       if caption.include? $archivo.split('\\').last[0..-6]
          $proceso = process.Name
           reintentar($archivoUTF8, $DIR)
       end # caption.include?
     end # if not ruby
     $proceso = nil
   end # for
 if not $no == "si"
   moverlo()
 end # no
 rescue
   if File.exist?($archivoUTF8) == true
     reintentar($archivoUTF8, $DIR)
 end  # rescue
end # begin
end



# Control de errores

if ARGV.empty? == true
 help()
elsif ARGV.length < 2
 help()
elsif File.directory?($DIR) == false
 print "\n El directorio de destino no existe: " + $DIR + "\n"
   response = message_box("\n" +
     "El directorio de destino no existe: "  + "\n\n" +  $DIRMSG + "\n\n\n" +
     "Crear el directorio?",
     "Crear el directorio?",
     BUTTONS_YESNO)
   if response == CLICKED_YES
     Dir.mkdir $DIR
   elsif response == CLICKED_NO
     abort
   elsif response == CLICKED_CANCEL
     exit
   end # response
end



# Proceso

for $archivo in ARGV[1..ARGV.length].each
$archivoUTF8 = ($archivo.encode('utf-8').gsub("ß", "á").gsub("Ú", "é").gsub("Ý", "í").gsub("¾", "ó").gsub("·", "ú").gsub("┐", "\u00BF").gsub("\û", "\u2013").gsub("┤", "\u00B4").gsub("\À", "\u00B7").gsub("\¬", "\u00AA").gsub("\¼", "\u00AC").gsub("\║", "\u00BA"))
 
   if File.exist?($archivoUTF8) == false
     print "\n El archivo a mover no existe: " + $archivoUTF8 + "\n"
   end # File not exist

   if File.exist?($DIR + "\\" + $archivoUTF8.split('\\').last)
     bytesToUnit(File.size($archivoUTF8), File.size($DIR + "\\" + $archivoUTF8.split('\\').last))
     date($archivoUTF8, $DIR + "\\" + $archivoUTF8.split('\\').last)
     response = message_box(
       " Origen             :  " + $archivo.split($archivo.split('\\').last).first + "\n" +
       " Archivo           :  " +  $archivo.split('\\').last + "\n" +
       " Tamano          :   " + $finalsize1 + "\n" +
       " Creacion         :   " + $CDate1.split('+').first + "\n" +
       " Modificacion :   " + $MDate1.split('+').first + " \n\n\n" +
       " Destino           :  " + $DIRMSG.split($archivo.split('\\').last).first + "\n" +
       " Archivo           :  " +  $archivo.split('\\').last + "\n" +
       " Tamano          :   " + $finalsize2 + "\n" +
       " Creacion         :   " + $CDate2.split('+').first + "\n" +
       " Modificacion :   " + $MDate2.split('+').first + " \n\n\n" +
       " El archivo de destino ya existe. Reemplazar archivo?",
       " Reemplazar archivo?",
       BUTTONS_YESNO)
     if response == CLICKED_YES
       Access($archivoUTF8, $DIR)
     elsif response == CLICKED_NO
       nil
     elsif response == CLICKED_CANCEL
       exit
     end # response
   else
     Access($archivoUTF8, $DIR)
   end # File exist
end # for



# Fin
exit
#924
Hello world!

Estaba cansado de tener que usar "assoc" para buscar si existe una estenxion, Y luego "ftype" para buscar la asociacion de esa extensión... bah!

He creado mi propia utilidad, ASSOC7.



Muchos conocerán la utilidad "Associate.exe" de mierd@soft Microsoft, Pues hace basicamente CASI lo mismo que mi utilidad, Pero "Associate.exe" no funciona correctamente (Crea mal las asociaciones).

El modo de usar este script es parecida a la utilidad "Associate"...

ASSOC7[OPCIÓN] [Extension] [Programa]

Pero mejorado!  ;D

- Opciones:

 -a    (Asociar una extensión)
 -c    (Crear una extension y una asociación para esa extensión)
 -d    (Desasociar una asociación)


Ejemplo para asociar:
Código (dos) [Seleccionar]
ASSOC7.exe -a .url notepad.exe
(Ftype urlfile="C:\windows\system32\notepad.exe" "%1")

Ejemplo para crear:
Código (dos) [Seleccionar]
ASSOC7.exe -c .elektro "%Windir%\notepad.exe"
(Reg add "HKCR\.elektro\.elektro.file"
Ftype .elektro.file="C:\windows\system32\notepad.exe" "%1")

Ejemplo para desasociar:
Código (dos) [Seleccionar]
ASSOC7.exe -d .elektro
(Ftype .elektro.file="")




Comparaciones:

                                                                        ASSOC7       Associate
Funciona en Windows 7                                              SI                             NO

Crea asociaciones                                                      SI                             NO

Modifica asociaciones                                                 SI                             SI (...Las jode en Windows 7, Menos la del notepad, Todas las demás.)

Elimina asociaciones                                                  SI                             SI

Se pueden usar nombres cortos para los programas      SI                             SI (Solamente si la instalación del programa está registrada en "AppPaths")


No tengo nada más que añadir.

Espero que a alguien le sirva como me servirá a mi  ;D

Salu2!




El code:

Código (dos) [Seleccionar]
@Echo OFF
Title Associate 7     v1.0
REM| ASSOC7 v1.0
REM|
REM| By Elektro H@cker

REM| Herramienta para asociar y desasociar extensiones de archivos.
REM|
REM| Nota:
REM| Si una extensión no tiene una asociación, Se creará una nueva añadiendo el sufijo ".file" al nombre de la extensión.
REM| Por ejemplo, Si existe la extensión ".Elektro" Pero no está asociada. La nueva asociación se llamará ".Elektro.File".




REM Control de errores

If  "%1" EQU "/?" (Goto :AYUDA)
If  "%1" EQU "" (Goto :AYUDA)
If  "%2" EQU "" (Goto :AYUDA)
If /I "%~1" EQU "-d" (Goto :Buscar_clave)
If  "%3" EQU "" (Goto :AYUDA)

Echo %1 | Findstr /I /R "\-a \-c \-d" >NUL
If NOT %Errorlevel% EQU 0 (Goto :ERROR.SWITCH)


set num=0
If NOT Exist "%Windir%\System32\%~3" (
If NOT Exist "%~3" (
call :Buscar_programa "%~1" "%~2" "%~3"
)  ELSE (Set "Program=%~3")
) ELSE (
Set "Program=%Windir%\System32\%3"
)
If "%NUM%" EQU "3" (Goto :ERROR.PATH)


Reg query "HKCR\%~2" >NUL 2>&1
If NOT %Errorlevel% EQU 0 (
If /I "%~1" EQU "-c" (Goto :Comprobar_crear) ELSE (Goto :ERROR.EXT)
)


Goto :ASSOC7


:Buscar_clave
Reg query "HKCR\%~2" >NUL 2>&1
If NOT %Errorlevel% EQU 0 (Goto :ERROR.EXT) ELSE (Goto :Comprobar_desasociar)


:Buscar_programa

Echo "%~3" | Find "\" >NUL 2>&1

Set /a num+=1
If NOT %Errorlevel% EQU 0 (
For /F "Tokens=*" %%a in ('Dir /B /S "%PROGRAMFILES(X86)%\%~3" 2^>nul') do (
If NOT "%%a" EQU "" (Set "Program=%%a" & Goto :EOF)
)
)

If NOT %Errorlevel% EQU 0 (
For /F "Tokens=*" %%a in ('Dir /B /S "%PROGRAMFILES%\%~3" 2^>nul') do (
If NOT "%%a" EQU "" (Set "Program=%%a" & Goto :EOF)
)
)
Set /a num+=1
If NOT %Errorlevel% EQU 0 (
For /F "Tokens=*" %%a in ('Dir /B /S "%WINDIR%\SYSWOW64\%~3" 2^>nul') do (
If NOT "%%a" EQU "" (Set "Program=%%a" & Goto :EOF)
)
)
Set /a num+=1
Goto :EOF


:ERROR.SWITCH
Echo+
Echo: No existe la opcion "%~1"
Exit /B 1

:ERROR.EXT
Echo+
Echo: No existe la extension "%~2"
Exit /B 1

:ERROR.PATH
Echo: No se ha podido encontrar el programa "%~nx3"
Exit /B 1

:ERROR.DESA
Echo+
Echo: La extension no estaba asociada a ningun programa. "%~2"
Exit /B 1


:AYUDA
Echo+
Echo+
Echo: Assoc7     (By Elektro H@cker)
Echo+
Echo+  Herramienta para asociar tipos de archivos.
Echo+
Echo+ ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
echo+
Echo: Modo de empleo:
Echo+
Echo: %~n0 [Opcion] [Extension] [Ruta de la aplicacion]
Echo+
Echo+
Echo: [OPCIONES]
Echo+
Echo; -a     [Asocia una extension a un programa
Echo: -c     [Crea una extension con su asociacion, Y la asocia a un programa]
Echo: -d     [Desasocia una asociacion existente]
echo+
echo+
Echo: Ejemplo:
Echo+
Echo: %~n0 -a .url Notepad.exe
Echo+
Exit /B 1





REM ASSOC7

:ASSOC7


:Comprobar_asociar
For /F "Tokens=1,2* delims= " %%a in ('Reg query "HKCR\%~2" ^| find "Predeterminado"') do (
If "%%c" EQU "" (Goto :Crear "%~1" "%~2") ELSE (Set "Tipo=%%c" && Goto :Asociar)
)

:Comprobar_desasociar
For /F "Tokens=1,2* delims= " %%a in ('Reg query "HKCR\%~2" ^| find "Predeterminado"') do (
If "%%c" EQU "" (Goto :ERROR.DESA) ELSE (Set "Tipo=%%c" && Goto :Desasociar)
)

:Comprobar_crear
Reg query "HKCR\%~2"  >nul 2>&1
If "%errorlevel%" EQU "1"  (Goto :Crear0 "%~1" "%~2") ELSE (Set "Tipo=%%c" && Goto :Asociar)


:Crear
Reg add "HKCR\%~1" /d "%~2.File" /F  >nul 2>&1
Set "Tipo=%~1.File"
Goto :Asociar


:Crear0
Reg add "HKCR\%~2" /F  >nul 2>&1
Reg add "HKCR\%~2" /d "%~2.File" /F  >nul 2>&1
Set "Tipo=%~2.File"
Goto :Asociar


:Asociar
Echo+
Ftype %Tipo%="%PROGRAM%" "%%1" | MORE
Echo: CORRECTO
Exit /B 0


:Desasociar
Echo+
Ftype %Tipo%="" | MORE
Echo: CORRECTO
Exit /B 0
#925
No consigo hacerlo de ninguna de las maneras xDD

¿Alguien sabe como?

muchas gracias...

Mi intento:

Código (dos) [Seleccionar]
$archivo="1.mp3"

system ('cmdow.exe | Find "($archivo)"')
puts $?.exitstatus

Process.exit
#926
¿Como randomizar el contenido de un txt?  :huh:

Es lo único que me falta para acabar este script :P

PD: Acepto cualquier utilidad externa
PD2: Si existiera algún parámetro para iniciar Winamp con la opcion "Activar modo aleatorio de lista" activada, también me serviría...

un saludo

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

Set Carpeta=%~n0

Echo #EXTM3U>"%Temp%\Lista Winamp.m3u"
For /F "Tokens=*" %%$ in ('Dir /B /S "%CARPETA%" ^| Findstr /R ".aif .flac .m4a .mid .mp3 .ogg .wav .wma"') do (Echo %%$>>"%Temp%\Lista Winamp.m3u")
REM Aqui iría el randomizado
Start /B C:"\Program Files (x86)\Winamp\winamp.exe" "%Temp%\Lista Winamp.m3u"
Exit

#927


Windows 7 Home Premium con SP1 integrado

Español x86: http://msft.digitalrivercontent.net/win/X17-58857.iso
Español x64: http://msft.digitalrivercontent.net/win/X17-58859.iso

English x86: http://msft.digitalrivercontent.net/win/X17-58996.iso
English x64: http://msft.digitalrivercontent.net/win/X17-58997.iso


Windows 7 Profesional con SP1 integrado

Español x86: http://msft.digitalrivercontent.net/win/X17-58866.iso
Español x64: http://msft.digitalrivercontent.net/win/X17-58868.iso

English x86: http://msft.digitalrivercontent.net/win/X17-59183.iso
English x64: http://msft.digitalrivercontent.net/win/X17-59186.iso


Windows 7 (N) Profesional con SP1 integrado

Español x86: http://msft.digitalrivercontent.net/win/X17-58871.iso
Español x64: http://msft.digitalrivercontent.net/win/X17-58874.iso

English x86: http://msft.digitalrivercontent.net/win/X17-59335.iso
English x64: http://msft.digitalrivercontent.net/win/X17-59337.iso


Windows 7 Ultimate con SP1 integrado

Español x86: http://msft.digitalrivercontent.net/win/X17-58877.iso
Español x64: http://msft.digitalrivercontent.net/win/X17-58879.iso

English x86: http://msft.digitalrivercontent.net/win/X17-59463.iso
English x64: http://msft.digitalrivercontent.net/win/X17-59465.iso




Activador DAZ Loader v2.2.1



Descarga




Kit de instalación automatizada de Windows® (WAIK) para Windows® 7



Descarga en Español
Descarga en English




Complemento del Kit de instalación automatizada de Windows® (WAIK) para Windows® 7 SP1

El complemento del Kit de instalación automatizada de Windows (WAIK) para Windows 7 SP1 es una actualización opcional de AIK para Windows 7 que le ayuda a instalar, personalizar e implementar Microsoft Windows 7 SP1.

Descarga en Español
Descarga en English




GimageX

GImageX is a graphical user interface for the ImageX tool from the Windows Automated Installation Kit v2.0 (WAIK). ImageX is used to capture and apply WIM images for Windows XP, Windows Vista and Windows 7 desktop deployments.



Descarga




RT Se7en Lite

RT Se7en Lite is to customize windows 7 operating system and to make it lite.
You can add wallpapers, Icons, themes, integrate updates, drivers, language packs, applications, remove components, enable or disable features, unattended installation settings, bootable ISO and USB creator , etc.



Descarga x86
Descarga x64




Windows 7 USB/DVD Download Tool

Windows 7 USB/DVD Download Tool Creates and Makes Bootable DVD Disc or USB Flash/Hard Drive from ISO Image.



Descarga en Español
Descarga en English

#928
Hola

Verán tengo un problema con el módulo FileUtils.move...

Si estos 2 archivos existen:

1º - C:\ABC.mp3
2º - D:\ABC.mp3


Imaginen que tenemos el 2º archivo abierto (Reproduciendose en winamp por ejemplo)
Ahora intentamos usar FileUtils.move para mover el 2º archivo, al directorio 1º. El archivo obviamente no se puede reemplazar, el FileUtils.move dará "error de acceso" pero a pesar de eso, FileUtils.move elimina el archivo 1º y desaparece!.

Y entonces nos queda esto:

1º - (NADA)
2º - D:\ABC.mp3



¿Se puede hacer algún tipo de "test" para que no elimine el archivo a reemplazar si da Errno::EACCES?
Lo que quiero decir, Es que primero se asegure de que la operación no va a dar error, Para que no elimine el archivo 1ª si el 2º no se puede mover.

Creo que por ahí leí algo como: FileUtils.test.move pero no estoy seguro...

También he visto    FileUtils::NoWrite, PEro no he visto ningún ejemplo de como usarlo, Ni tampoco se si sirve para lo que necesito.

Muchas gracias.




El code que tengo por si sirve para más información es este:

Código (ruby) [Seleccionar]
# -*- coding: UTF-8 -*-

# Mueve archivos desde un punto de origen hasta un punto de destino
# Pensado para usarlo como replazamiento del "SendTo" de Windows.
#
# (Requiere el uso de argumentos)


# Módulos

require "FileUtils"
require 'dl'

exit if Object.const_defined?(:Ocra)


# Variables constantes

BUTTONS_OKCANCEL = 1
BUTTONS_YESNO = 4
CLICKED_CANCEL = 2
CLICKED_YES = 6
CLICKED_NO = 7


# Métodos

def help()
print "\nSe requiere al menos 1 archivo de origen.\n\n\n"
print "Modo de empleo: \n\n"
print ' Mover.rb [Destino] [Archivo de origen 1] [Archivo de origen 2] [etc...]' + "\n\n\n"
print 'Ejemplo: (Mover tres archivos al directorio de destino "C:"' + "\n\n"
print ' Mover.rb "C:\" "D:\Archivo1.txt" "E:\Archivo2.jpg" "F:\Archivo3.mp3"' + "\n\n"
Process.exit
end

def message_box(txt, title='', buttons='')
   user32 = DL.dlopen('user32')
msgbox = DL::CFunc.new(user32['MessageBoxA'], DL::TYPE_LONG, 'MessageBox')
r, rs = msgbox.call([0, txt, title, 3].pack('L!ppL!').unpack('L!*'))
   return r
end

def force_move(source_file, dest_file)
 FileUtils.mv $archivo, ARGV[0]
 rescue Errno::EACCES
  response = message_box("El archivo esta en uso:\n" + $archivo  + "\n\n Reintentar?", "Reintentar?", BUTTONS_OKCANCEL)
if response == CLICKED_YES
      retry
  elsif response == CLICKED_CANCEL
      Process.exit
 end
end


# Control de errores

if ARGV.empty? == true
help()
elsif ARGV.length < 2
help()
elsif File.directory?(ARGV[0]) == false
print "\n El directorio de destino no existe: " + (ARGV[0]) + "\n"
Process.exit
end

for archivo in ARGV[1..ARGV.length].each
if File.exist?(archivo) == false
print "\n El archivo a mover no existe: " + archivo + "\n"
end

end


# Proceso

for $archivo in ARGV[1..ARGV.length].each

if File.exist?(ARGV[0] + "\\" + $archivo.split('\\').last)
response = message_box("Origen:\n" + $archivo + "\n\n Destino:\n " + ARGV[0] + "\\" + $archivo.split('\\').last + "\n\n El archivo de destino ya existe, Reemplazar archivo?", "Reemplazar archivo?", BUTTONS_YESNO)
if response == CLICKED_YES
  force_move($archivo, ARGV[0])
  elsif response == CLICKED_CANCEL
  Process.exit
end
else
force_move($archivo, ARGV[0])
end

end


# Fin
Process.exit
#929
Hola

He formateado hace poco, He instalado Windows 7 x64 SP1 integrado (Versión oficial del MSDN)

Tengo una tarjeta Creative SoundBlaster Audio X-Fi Gamer , Y en este windows no me funciona... El driver se instala sin errores pero no se reconoce ningún dispositivo (Instalado) de audio...

La versión del driver es esta: SBXF_PCDRV_LB_2_18_0015, Siempre he usado la misma versión ya que hace más de un año que no actualizan el maldito driver...

No se cual puede ser el problema... Antes tenía windows 7, Le metí el SP1 y el driver seguía funcionando...

He intentado instalarme la versión alternativa del driver, Es para XP y me dice que el sistema es incompatible.
He intentado instalar una versión más nueva de OpenAL y Asio4all, porque creo que son librerías que usa el driver. Támpoco me ha servido para nada.
He instalado drivers no oficiales de SBXFI...

En fin, Ya no se que más intentar...

Esto es lo que sale en el administrador de dispositivos:


Si intento abrir el panel de control crative, me sale esto:
#930
Buenas

Tengo hecho un code, He leido sobre Rescue, Raise, Y retry, Pero no lo entiendo del todo...

El rescue solo se ejecuta una vez en mi code, Y yo necesito que haga rescues sin parar, Suponía que era con "retry" pero creo que no...

Lo único que necesito conseguir es que si al mover el archivo da error (El error EACCES) se intente mover una y otra vez, Hasta conseguirlo.

Porfavor una ayuda


Código (ruby) [Seleccionar]
# Proceso

def Mover()

for archivo in ARGV[1..ARGV.length].each

if File.exist?(ARGV[0] + "\\" + archivo.split('\\').last)
response = message_box("Origen:\n" + archivo + "\n\n Destino:\n " + ARGV[0] + "\\" + archivo.split('\\').last + "\n\n El archivo de destino ya existe, Reemplazar archivo?", "Reemplazar archivo?", BUTTONS_YESNO)
if response == CLICKED_YES
  FileUtils.move archivo, ARGV[0]
  elsif response == CLICKED_CANCEL
  Process.exit
end
else
FileUtils.move archivo, ARGV[0]
end
end

rescue Errno::EACCES
puts "El archivo está en uso"
FileUtils.move archivo, ARGV[0]
retry

end


Mover()
Process.exit
#931
Hola, estoy intentando hacer un code:

Código (ruby) [Seleccionar]
require "FileUtils"

for archivo in ARGV
    FileUtils.move archivo, ARGV[0]
end

Process.exit


El problema es que necesito que el for trabaje los argumentos a partir del argumento nº 1, Hasta llegar al último argumento (Número desconocido que capturo con ARGV.length)

Osea, Que no tome en cuenta el argumento nº 0



He intentado hacerlo con el operador de rango, y algunos ejemplos más pero no lo consigo...

Código (ruby) [Seleccionar]
ARGV[1]..ARGV[(ARGV.length)].each { |archivo| FileUtils.move archivo, ARGV[0] }

Código (ruby) [Seleccionar]
ARGV[1].upto ARGV[(ARGV.length)] { |archivo| FileUtils.move archivo, ARGV[0] }

Código (ruby) [Seleccionar]
for archivo in ARGV[1], ARGV[(ARGV.length)]
   FileUtils.move archivo, ARGV[0]
end

#932
Tengo 2 discos duros SATA asignado a estas letras: C: y E:

Desde hace 2 dias tengo problemas con el disco principal C:, Si lo "calentaba" y le daba caña, Sonaba un "clok" en el disco duro y se quedaba como "muerto", Se paraba durante un minuto  y no hacia ruido, no procesaba datos, Y luego al pasar ese minuto o 2, Volvia a la vida y a trabajar... Pues así así cada vez que lo "calentaba" demasiado.

Tengo que decir que el disco C: solo daba parones si tengo los 2 discos conectados. Si desconecto "E:" y le meto caña a "C:" por ejemplo copiando archivos grandes durante una hora no sucede nada extraño.

De momento este problema lo he "solucionado" cambiando el cableado de los discos DE SITIO. El de C: a E: y el de E: a C:.

EDITO:

Pues no se ha solucionado no... Sigue habiendo parones en el disco C:, Ahora se empiezan a notar...

Necesito ayuda ._.

Ah, y desde que empecé a notar el problema, Restauré la configuración por defecto de la BIOS, Pero no ha servido para nada xD.

También cabe decir que he desactivado la caché de escritura en los 2 discos, para evitar que los parones me jodan archivos... y para que el cableado fluya mejor (Aunque no se si afecta a los cables xD)...

También tengo desactivados la mayoría de servicios de Windows, Como los temas, para evitar que el disco trabaje más de lo necesario...

No se que más datos aportar.




Por otro lado y a raíz de ese problema, Ahora cuando inicio sesion en Windows, A los 5 o 10 minutos (Eso es lo más extraño de todo) aparece un nuevo disco duro en "mi pc": "(D:) Disco local", con un icono de disco duro y un interrogante azul.

Obviamente es una unidad innaccesible porque no existe y no debería estar ahí...
La unidad no aparece en el administrador de dispositivos y particiones...

- ¿Que puede ser?

He escaneado con NOD y no tengo virus.

También le he pasado un chkdsk y a C: y me ha arreglado archivos ilegibles debido a los parones del primer problema.

- ¿El problema de los parones puede tener algo que ver como para que sea algo tán exagerado de crearme un nuevo disco en Windows?

- ¿Alguna alternativa antes de formatear?...

Gracias.
#933
CitarEn Ruby, puedes volver a abrir una clase y modificarla.

Código (ruby) [Seleccionar]
class Anfitrion
   attr_accessor :nombre
end


Se supone que eso da acceso a la variable "nombre" dentro de la clase "Anfitrion", Bien, Lo que no explica es luego como poder modificar la variable, ¿Se hace como con una variable de instancia?

Para modificar una variable de instancia es así, verdad?:
Código (ruby) [Seleccionar]
@nombre = "lo que sea"

?

Muxas Gracias..
#934
Hola

Tengo como 6 o 7 cuentas olvidadas en hotmail, Bueno, Suponiendo que no me las hayan borrado ya...

¿Como puedo verificar si una cuenta existe, Sin recordar la contraseña?

Solamente quiero saber si sigue existiendo, Para luego intentar recuperar la contraseña.

Más que nada porque intentar averiguarlo por live.com es una mierd@:

CitarHa intentado iniciar sesión demasiadas veces con una dirección de correo electrónico o contraseña incorrectas.

Y me bloquea la conexión.


Además de los nombres de mis cuentas no me acuerdo muy bien... y no se si terminaban en hot.com o hot.es o live.es, etc... por eso tendría que hacer varios intentos hasta dar con la buena... Y con el límite de live.com es un coñazo y un cansineo tremendo.

Salu2
#935
¿Alguien sabe que herramientas necesito para modificar la versión dle producto, el nombre de la compañía, etc?

#936
Hola

Este es mi primer script en Ruby, Y lo he hecho con mucha ayuda sino no habría podido

Lo único que me preocupa del script es el def "todos", no se si está bien hecho.

Y me gustaría simplificar la comprobacion de los argumentos así por ejemplo:

Código (ruby) [Seleccionar]
if (ARGV[0])==(-h|--help)
help()
end


Pero no se hacerlo bien xD

Si ven algún error o mejora diganmelo, gracias

EDITO:
Por cierto, Me parece tremendamente inseguro que al usar:
File.rename
Si existe un archivo con el mismo nombre que el archivo nuevo (renombrado), El archivo se reemplaza por el renombrado, En vez de dar error... O algo parecido xD






Código (ruby) [Seleccionar]
# -*- coding: UTF-8 -*-


# Renombrador preconfigurado de archivos
#
# El código original es de RyogiShiki
# http://foro.elhacker.net/scripting/solucionado_ruby_renombrando_un_caracter_ilegal-t354066.0.html



# Gemas, Módulos...

require 'find'
exit if Object.const_defined?(:Ocra)

system('chcp 1252 >NUL')



# Métodos

def reset_vars()
$total = -1
$renamed = 0
end

def resultado()
puts " Procesados: #{$total} archivos"
puts " Renombrados: #{$renamed} archivos"
system('chcp 850 >NUL')
Process.exit
end

def advise()
print ' Use "Renamer.exe -a" Para mostrar la ayuda.' + "\n"
system('chcp 850 >NUL')
Process.exit
end

def help()
system('chcp 850 >NUL')
print "\n Modo de empleo:\n\n"
print "  " + __FILE__.split('/').last + " [Opci\u00F3n] [Ruta]\n\n"
print "\n Opciones: \n\n"
print "  -c --comilla        Reemplaza \[\u00B4\] por \[\u0027\]\n\n"
print "  -e --extension      Reemplaza [ .mp3]  por [.mp3]\n\n"
print "  -f --featuring      Reemplaza [ ft ],[ ft. ],[ feat ],[ featuring ] por [ feat. ]\n\n"
print "  -g --guion          Reemplaza \[\u2013\] por \[-\]\n\n"
print "  -i --interrogante   Elimina \[\u00BF\]\n\n"
print "  -t --todo           Combina todas las opciones (-c + -e + -f + -g + -i)\n"
Process.exit
end

def reemplazar(caracter_a_reemplazar, nuevo_caracter)
$total = -1
Find.find(ARGV[1].gsub("\\", "/")) { |path|
path = path.encode('utf-8')
if path[caracter_a_reemplazar] then
if File.exist?(path.gsub(caracter_a_reemplazar, nuevo_caracter))
print "\n ERROR.   El archivo a reemplazar ya existe: " + (path).split('/').last + "\n"
else
File.rename(path, path.gsub(caracter_a_reemplazar, nuevo_caracter))
$renamed += 1
end
end
$total += 1
    }
end



# Argumentos

if (ARGV.empty?) then
help()
end

if (ARGV[0])=="-a" or ARGV[0] == "/?"
help()
end

if (ARGV[1])==()
print "\n ERROR.   Debe introducir una ruta...\n\n"
advise()
elsif if not File.directory? (ARGV[1]) then
print "\n ERROR.   La ruta no existe...\n\n"
advise()
end
end

if ARGV[0] == "-c" or ARGV[0] == "--comilla"
reset_vars()
reemplazar("\u00B4", "\u0027")
resultado()
elsif (ARGV[0])=="-e" or ARGV[0] == "--extension"
reset_vars()
reemplazar(" .mp3", ".mp3")
reemplazar(" .MP3", ".mp3")
reemplazar(" .Mp3", ".mp3")
resultado()
elsif (ARGV[0])=="-f" or ARGV[0] == "--featuring"
reset_vars()
reemplazar(" ft. ", " feat. ")
reemplazar(" Ft. ", " feat. ")
reemplazar(" FT. ", " feat. ")
reemplazar(" ft ", " feat. ")
reemplazar(" Ft ", " feat. ")
reemplazar(" FT ", " feat. ")
reemplazar(" feat ", " feat. ")
reemplazar(" Feat ", " feat. ")
reemplazar(" FEAT ", " feat. ")
reemplazar(" featuring ", " feat. ")
reemplazar(" Featuring ", " feat. ")
reemplazar(" FEATURING ", " feat. ")
resultado()
elsif (ARGV[0])=="-g" or ARGV[0] == "--guion"
reset_vars()
reemplazar("\u2013", "-")
resultado()
elsif (ARGV[0])=="-i" or ARGV[0] == "--interrogante"
reset_vars()
reemplazar("\u00BF", "")
resultado()
elsif (ARGV[0])=="-t" or ARGV[0] == "--todo"
reset_vars()
reemplazar("\u00B4", "\u0027")
reemplazar("\u2013", "-")
reemplazar("\u00BF", "")
reemplazar(" ft. ", " feat. ")
reemplazar(" Ft. ", " feat. ")
reemplazar(" FT. ", " feat. ")
reemplazar(" ft ", " feat. ")
reemplazar(" Ft ", " feat. ")
reemplazar(" FT ", " feat. ")
reemplazar(" feat ", " feat. ")
reemplazar(" Feat ", " feat. ")
reemplazar(" FEAT ", " feat. ")
reemplazar(" featuring ", " feat. ")
reemplazar(" Featuring ", " feat. ")
reemplazar(" FEATURING ", " feat. ")
reemplazar(" .mp3", ".mp3")
reemplazar(" .MP3", ".mp3")
reemplazar(" .Mp3", ".mp3")
resultado()
end
#937
Hola de nuevo

Me surge un problema en la parte:
Código (ruby) [Seleccionar]
elsif(ARGV[0])=="-f"
featuring()


`block in featuring': undefined method
`+' for nil:NilClass (NoMethodError)


Me dice que no he definido el método, ¿Porque es tán cruel conmigo?  :-(



Código (ruby) [Seleccionar]
# -*- coding: UTF-8 -*-

# Métodos

def reset()
renamed = 0
total = -1
end

def resultado()
puts "Procesados: #{total} archivos"
puts "Renombrados: #{renamed} archivos"
end

def featuring()
Find.find(ARGV[1].gsub("\\", "/")) { |path|
path = path.encode('utf-8')
if path[" ft. "] then
File.rename(path, path.gsub(" ft. ", " feat. "))
rename += 1
end
total += 1
}
end


# Argumentos

if (ARGV[0])==()
help()
elsif(ARGV[0])=="/?"
help()
elsif(ARGV[1])==()
print "\n ERROR".red.bold + " | Debe introducir una ruta...\n\n"
help()
elsif(ARGV[0])=="-f"
reset()
featuring()
resultado()
end


#938
Hola

He probado las siguientes gemas en Windows 7 y ninguna me ha funcionado para el propósito:

Paint
Colored gem
win32console


No me dan error, pero no se muestra en color, y sigo los ejemplos al pie de la letra...


¿Tienen idea de como puedo hacer algo parecido a esto bajo windows 7?



PD: Es posible que no me funcione porque estoy probando en un script rubi con codificación UTF-8?
    Tengo entendido que para ver los colores hay que codificar en ANSI pero no estoy seguro de eso
    ¿Alguna alternativa entonces?



EDITO:

Nada, He probado el "test.rb" oficial de la gema paint por ejemplo, y no se muestra en colores...
#939
Estoy intentando hacer una pantalla de ayuda en un script

El problema es que me da errores al intentar mostrar estos caracteres:

¿    ´    '    –

# -*- coding: UTF-8 -*-

def help()
print "\n Opciones: \n\n"
print ' -?          (Elimina el caracter "¿")' + "\n"
print ' -comilla    (Reemplaza "´" por "'")' + "\n"
print ' -ft         (Reemplaza " ft " por " feat. ")' + "\n"
print ' -ft.        (Reemplaza " ft. " por " feat. ")' + "\n"
print ' -guion      (Reemplaza "–" por "-")' + "\n"
Process.exit
end

help()



He intentado mostrar el guión así, pero nada... :

Código (ruby) [Seleccionar]
print ' -guion      (Reemplaza "\u2013" por "-")' + "\n"





Y una pregunta de paso...

Como puedo hacer esto correctamente?

Código (dos) [Seleccionar]
if (ARGV[0])==""
help()
end


La intención es que reconozca si el argumento está vació.

EDITO:
Vale lo segundo ya lo he conseguido:

Código (ruby) [Seleccionar]
if (ARGV[0])==()
help()
end
#940
El problema es que tengo muchos archivos que usan este caracter: " ", Es parecido a un guión pero más largo.

No encuentro la forma de renombrar ese guión extraño por el guión normal...

Pongo como ejemplo un archivo mp3 con este nombre: "Dilemn – Always Continue.mp3"


1er intento:
Código (dos) [Seleccionar]
Rename "Dilemn – Always Continue" "Dilemn - Always Continue"
El sistema no puede encontrar el archivo especificado.
FAIL


2ndo intento:
Código (dos) [Seleccionar]
Set name=Dilemn – Always Continue.mp3
Rename "%name%" "%name:-=-%"

El sistema no puede encontrar el archivo especificado.
FAIL


3er intento:
Código (dos) [Seleccionar]
For /F "Tokens=*" %%a in ('dir /B "*.mp3"') do (rename "%%a" "LO QUE SEA")
El sistema no puede encontrar el archivo especificado.
FAIL
#941
Hace tiempo alguien buscaba algo así pero no encuentro el post :/






GhostMouseAutoClickerSetup.exe

Con este programa puedes monitorizar los clicks del ratón, y sirve de keylogger también.

Después, puedes reproducir el escenario real (los clicks y el tecleado)

Un salludo.

Fuente: http://www.64bitprogramlar.com/ghost-mouse-auto-clicker-3-4-28585.html
#942
Y así empiezan mis primeros problemas con Windows 8... Problemas que en windows 7 nunca tube...

Intento usar DISM, y me tira este error:





Ni falta decir que mi cuenta es de administrador
Además he desactivado el UAC
Y también he activado como propietario "Administrator" y los privilegios de "Full acces" en todos los usuarios para el archivo "C:\Windows\System32\Dism.exe"

¿Alguien sabe que más debo hacer? -.-

Maldito windows 8.

#943
Los tips y programas que encontrarás en este topic:


Página nº1

- Guía: Activar la barra de estilo "RibbonUI" en el administrador de tareas

- Guía: Reiniciar el explorer

- OEM Configurator 2.0

- Las nuevas Hotkeys de Windows 8

- Guía: Como Desloguearse, o Reiniciar el PC en Windows 8

- Windows 8 Font Changer   Cambia la fuente predeterminada de windows.

- Guía: Loguearse en Windows por el método de reconocimiento de imagen

- Auto-Loguearse en Windows 8

- Grabar una ISO desde la consola de comandos de Windows (CMD) usando Windows Disc Image Burner

- Truca Windows con "Windows 8 Tweaker"

- Habilitar la característica "Snap". Corre 2 MetroUI al mismo tiempo, o 1 Metro + el clásico escritorio.

- Metro UI Colors Changer. Cambia fácilmente los colores de Metro.

- Metro UI Tweaker.

- Descarga Windows 8 Beta del consumidor  
 
- Guía: Instalar Windows 8 en VirtualBox

- Guía: Crear un disco virtual en Windows 8

- Guía: Resetear Windows 8 a sus valores de fábrica + Actualizar el sistema de archivos (Parecido a la "Restauración de Windows" de Windows 7)

- Desactivar superfecth en windows 8

- Bypass Windows 8 SmartScreen Filter

- Desactivar totalmente Windows 8 SmartScreen Filter

- Start8 Añade MetroUI al menú inicio,

- Restaurar el menú de inicio en Windows 8 mediante el registro

- Restaurar el menú de inicio en Windows 8 usando el programa ViStart

- (Gadget)  Windows8 StartMenu 1.1.0

- Windows 8 Dev. Preview Tweaker

- Start Screen Editor 0.1.0.0  

- Windows 8 Aero Lite Tweaker 1.0

- Win8SET     (Shareware)    

- Windows 8 Start Menu Switcher 1.0.0.0

- Windows 8 Start Tweaker

- Windows 8 Snap Enabler 1.0.0.0

- Start Menu Selector 2.0.0.39

- Windows 8 Start Menu Toggle

- Crear un USB Bootable de Windows 8

- La manera más sencilla de omitir la interfaz Metro y saltar directamente al escritorio.

- Opciones preconfiguradas para el menú contextual del ratón de Windows 8

- Explicando el nuevo proceso de booteo de Windows 8

- (Guía) (Dual-Boot) Volver al bootloader de Windows 7 después de haber instalado Windows 8

- Reiniciar el PC e ir directamente a las opciones avanzadas de recuperación.


Página nº2

- RecImg Manager: Crea o restaura puntos de restauración en Windows 8

- Power8: Otro menú de inicio para Windows 8 xD

- Switch Boot (Cambia el bootloader de Windows 8 por el de Windows 7)

- Windows 8 KMS Activation (Activador para Windows 8 RTM)

- Stardock Start8 (Menú de inicio al estilo Windows Vista/7)



Salu2!










Restaurar el menú de inicio en Windows 8 mediante el registro

¿No te gusta "METRO"?

¿Prefieres el menú inicio típico de Windows 7?

Para todos aquellos que quieran desactivar esa basura de METRO, Solo tienen que ejecutar ese archivo de registro:


Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer]
"RPEnabled"=dword:00000000


Fuente: Google    XD

#944
Hola

Me gustaría poder loguearme al foro de esta manera:

http://USUARIO:PASS@foro.elhacker.net

Y hacer lo mismo en otros foros para no estar logueandome siempre y no tener que recordar las contraseñas cuando expira el tiempo de sesión.

Pero cuando lo intento, Sucede esto:



¿Como lo debo hacer?

Gracias...
#945
El script que estoy probando es simple, Lo he probado muchas otras veces y funciona, Pero esta vez la ruta que pongo me da problemas... Estoy seguro que es por los paréntesis.

¿Alguien me dice la forma correcta para escribir esta ruta?:

Código (vb) [Seleccionar]
set objshell = createobject("wscript.shell")
objshell.run "C:\Program Files (x86)\Hot Corners\RUN.bat"


Gracias