elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


  Mostrar Mensajes
Páginas: 1 ... 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 [20] 21 22
191  Programación / Scripting / Re: Ayuda [BATCH] en: 29 Junio 2008, 12:04 pm
Código:
@echo off
for /f "tokens=* delims=$" %%t in (file.txt) do set s=%%t & call :metodo
pause
exit
:metodo
set text=perro
set replace=gato

::set s=%s:%text%=%replace%%
::aqui no logre colocar variables, esto no funciona.

echo %s%
::esto si funciona, aunque no es la idea.
set s=%s:perro=gato%
echo %s%

192  Programación / Scripting / Re: [Batch] Problema con el Quick Batch File Compiler en: 29 Junio 2008, 07:56 am
1-lo de cols comentado es solo por gustos, perdona :D.

2-selecciono desde la letra indice 0 hasta n - 1, es decir al colocar (0,1) selecciono desde el indice 0 hasta el indice 1 - 1 es decir de 0 a 0, esto es la primera letra solamente. Entonces, si la variable comienza con 0, (para evitar que sea octal, vamos al comienzo (start)

3-Yo me equivoqué. si en el set /a asignas una letra queda en 0. Pero si ocurre un error, la asignación no ocurre, ahora si la variable existía queda como estaba.

4-si colocas  la ayuda de if (if/?) te dirá que: si los comandos de extensión están habilitados, if cambia así: (... GTR, LEQ) y con setlocal enableextensions habilitas esto.

Puedes leer el post de programación avanzada en batch, y te aseguro que todo te quedará más claro.

BONUS: te regalo un programa que te muestra los contenidos que van tomando las  variables en tiempo de ejecución de los bat, se llama PowerCmd.

Código:
http://wikisend.com/download/219636/PowerCmd.rar










193  Programación / Scripting / Re: [Batch] Problema con el Quick Batch File Compiler en: 29 Junio 2008, 06:52 am
definitivamente es problema del compilador, lo probé con la versión que usaste y sucede lo que mencionas. Lo compilé con la versión 2.1.7 y ningún problema.

me tomé la libertad de modificar un poco tu código, para darte otra idea de cómo escribirlo, (como opinabas que daba muchas vueltas :D).

Código:
@echo off
rem Mode con Cols=54
:: rem y dos dos puntos es comentado

:start
cls
echo.
title Apagar el equipo - Temporizador
echo  ****************************************************
echo                  APAGAR EL SISTEMA
echo  ****************************************************
echo.
echo.

:ingreso
set priminutos=
set /p priminutos=" - Minutos: "
if "%priminutos%":=="" (goto start)
if %priminutos:~0,1%==0 (goto start)
:: si primera letra es 0 ir a start

set /a priminutos=%priminutos%
::si ocurrio un error queda en 0

setlocal enableextensions
:: comandos de extension habilitados, para el if.

if %priminutos% LEQ 0 (goto errora)
::si priminutos es menor o igual a 0 ir a errora

if %priminutos% GTR 1440 (goto errora)
::si priminutos es mayor a 1440 ir a errora

goto correcto

:errora
cls
::limpiamos rapidamente el error
echo.
echo.
echo  Hubo un error en la ejecucion del comando...
echo.
echo  Tal vez escribio un valor distinto a 1440 (24 horas)
pause>nul
exit

:correcto
set /a minutos=%priminutos%*60
echo.
set /p mensaje=" - Mensaje: "
set mensaje=%mensaje:"=%
::borramos las comillas de mensaje por si colocan encerrado entre comillas.
shutdown -s -t %minutos% -c "%mensaje%"
exit
194  Programación / Scripting / Re: [Batch] Problema con el Quick Batch File Compiler en: 29 Junio 2008, 00:27 am
Ese error que mencionas sucede cuando con set /a asignas un valor que comienza con 0 (que indica que es octal) seguido de un número 8 o 9 (el sistema octal abarca los números de 0 a 7)

es decir si haces esto:

set /a numero=08
te arrojará ese error que mencionas.

por cierto interesante ese comando:
mode con
195  Programación / Scripting / Re: Ejecucion de archivo exe con batch en: 29 Junio 2008, 00:18 am
Es un poco confuso, porque en el título dices "Ejecución de archivo exe con batch" y después dices, ejecutarlo con acceso directo.

Pero por fin te entendí.

Lo que necesitas es hacer es esto:

Crear un acceso directo con la siguiente ruta:

%COMSPEC% /c start %homedrive%\officexp-KB947866-FullFile-ESN.txt

o

%COMSPEC% /c start %systemroot%\officexp-KB947866-FullFile-ESN.txt


En dónde la carpeta de la ruta la específicas con variables, entra a cmd.exe y escribe set y verás las variables de carpetas.

Si el archivo está en Mis documentos pone por ejemplo:

%COMSPEC% /c start "%userprofile%\Documentos de %username%\officexp-KB947866-FullFile-ESN.txt"

Para retroceder un directorio colocas ..
Por ejemlo para ir a Document and settings:

%COMSPEC% /c start "%userprofile%\..\officexp-KB947866-FullFile-ESN.txt"

Por cierto debes cambiar officexp-KB947866-FullFile-ESN.txt por el archivo que tú deseas, en este caso lo hice con una actualización de office :D

196  Programación / Scripting / BINARIO a BATCH en: 28 Junio 2008, 04:42 am
Fanático de la portabilidad, y muy contento con el método de Shadow para convertir de binario a batch, me puse a buscar algún código que hicera lo mismo que el programa de Shadow, y descubrí uno hecho en pascal (nunca había leído pascal  :D), y lo compilé y no trabajaba bien, así es que lo arreglé con lo nada que sé de pascal, y mirando los resultados del programa de Shadow. El único problema que tiene es que con archivos grandes, no informa que son grandes, sino que se cae al ejecutarlo. Me comprometo a hacer lo mismo en C en un tiempo más.

Bueno, este es el código (modificado). Lo compilé con Free Pascal.

debugbat.pas
Código
  1.  
  2. (*************************************************************************
  3.  
  4.              ===============================================
  5.              Hex-encode binary files in debug-script batches
  6.              ===============================================
  7.                  Copyright (c) 1993,1994 by Jos‚ Campione
  8.                    Ottawa-Orleans Personal Systems Group
  9.                           Fidonet: 1:163/513.3
  10.  
  11.         This program reads a binary file and creates a hex-encoded
  12.         text file. Will use debug.exe or debug.com to
  13.         reconstruct the binary file.
  14.  
  15. **************************************************************************)
  16. {$M 2048,0,0}
  17. program debugbat;
  18.  
  19. uses crt,dos;
  20.  
  21. const
  22.  maxsize = $FFFF;
  23.  
  24. type
  25.  string2 = string[2];
  26.  
  27. var
  28.  ifile : file of byte;
  29.  ofile : text;
  30.  n : word;
  31.  s : word;
  32.  b : byte;
  33.  fsize : word;
  34.  dir : dirstr;
  35.  nam : namestr;
  36.  ext : extstr;
  37.  filename : string[48];
  38.  i : integer;
  39.  
  40. function b2x(b: byte): string2;
  41. const hexdigit: array[0..15] of char = '0123456789ABCDEF';
  42. begin
  43.  b2x:= hexdigit[b shr 4] + hexdigit[b and $0F];
  44. end;
  45.  
  46. procedure myhalt(e: byte);
  47. begin
  48.  gotoxy(1,wherey);
  49.  case e of
  50.    0 : writeln('done.');
  51.    1 : writeln('error in command line.');
  52.    2 : writeln('file exceeds the 65K limit.');
  53.    else begin
  54.      e:= 255;
  55.      writeln('Unknown error.');
  56.    end;
  57.  end;
  58.  halt(e);
  59. end;
  60.  
  61. begin
  62.  writeln;
  63.  writeln('DEBUGBAT v.1.0 Copyright (c) Feb/93 by J. Campione.');
  64.  writeln('Modify by ...');
  65.  write('Wait... ');
  66.  n := 0;
  67.  s := $00;
  68.  {$I-}
  69.  assign(ifile,paramstr(1));
  70.  reset(ifile);
  71.  {$I+}
  72.  if (paramcount <> 1) or (ioresult <> 0) or (paramstr(1) = '') then myhalt(1);
  73.  fsplit(paramstr(1),dir,nam,ext);
  74.  for i:= 1 to length(ext) do ext[i]:= upcase(ext[i]);
  75.  if ext = '.EXE' then filename:= nam + '.ext'
  76.                  else filename:= nam + ext;
  77.  fsize:= filesize(ifile);
  78.  if fsize > maxsize then myhalt(2);
  79.  assign(ofile, nam + '.src');
  80.  rewrite(ofile);
  81.  writeln(ofile,'N ',filename);
  82.  while not eof(ifile) do begin
  83.    n:= n + 1;
  84.    read(ifile,b);
  85.    if n mod 16 = 1 then begin
  86.      writeln(ofile);
  87.      write(ofile,'e ',b2x(hi(s)),b2x(lo(s)));
  88.      s := s + 16;
  89.    end;
  90.    write(ofile,' ',b2x(b));
  91.  end;
  92.  writeln(ofile);
  93.  writeln(ofile,'rcx');
  94.  writeln(ofile,b2x(hi(n)),b2x(lo(n)));
  95.  writeln(ofile,'w0');
  96.  writeln(ofile,'q');
  97.  close(ifile);
  98.  close(ofile);
  99.  myhalt(0);
  100. end.
  101.  
  102.  


Se ejecuta así:

debugbat archivo

Luego, solo se toma el archivo resultante .src, y se hace en consola o desde un bat:

debug.exe < archivo.src

o

type archivo.src | debug.exe


Los archivos .exe se crearán como .ext (ya que sino debug arroja error)

Sugerencia obvia: Comprimir antes el ejecutable con upx. Revisar resultados, por ejemplo con fc.exe o comp.exe
197  Programación / Scripting / Re: Cronometro en VBS :p en: 28 Junio 2008, 01:50 am
Te felicito Novlucker, está muy bueno, lo que si, crítica constructiva, podría ejecutarse el txt en alguna carpeta temporal, porque en cuenta limitada, al no tener acceso a los directorios raíz, arroja error.

Por cierto, a mí no me sonó el beep, porque tengo la siguiente llave en el registro:

[HKEY_CURRENT_USER\Control Panel\Sound]
"Beep"="no"
"ExtendedSounds"="no"
198  Programación / Scripting / Re: Ejecucion de archivo exe con batch en: 28 Junio 2008, 01:48 am
Lo que te entiendo es que quieres correr un ejecutable con otra extensión, con el comando start, no se que sucede con el comando start de mi pc, no me ejecuta aplicaciones que no sean .exe (debe ser por los parches). No entiendo que tiene que ver el acceso directo, porque puedes crear el bat o cmd, colocándo start y la ruta del archivo, en la que puedes utilizar %variables% como %tmp% %WinDir% %UserProfile% y después añades un acceso directo .pif



199  Programación / Scripting / Re: Ejecutar Bat's Ocultos en: 27 Junio 2008, 06:17 am
lo contrario de echo texto>NUL es echo texto>CON que es la salida por defecto (la pantalla).
200  Programación / Scripting / Cómo mezclar BATCH + REG en: 27 Junio 2008, 04:00 am
Cómo mezclar código REG y código batch: un archivo .reg (archivo de registro) es identificado por regedit.exe con una cabezera, que puede ser en windows 9x: REGEDIT4 o en Windows más actuales: Windows Registry Editor Version 5.00

Si utilizamos un archivo batch, y le ponemos como primera linea esta cabezera, y luego añadimos un @cls, para limpiar el error de "cómando no identificado", y luego añadimos más código batch, y al final añadimos código de registro, podemos llamar desde el mismo bat al mismo archivo, cómo si fuese un .reg

Ejemplo:
archivo.bat o archivo.cmd

Código:
REGEDIT4

@cls
::CarlitoS.dll
@echo off
echo Tenemos codigo batch y REG en este mismo archivo.
regedit /s "%~f0"
pause
exit

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer]
"ClearRecentDocsOnExit"=dword:00000001


Páginas: 1 ... 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 [20] 21 22
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines