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

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Quitar este error en batch
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] 3 4 Ir Abajo Respuesta Imprimir
Autor Tema: Quitar este error en batch  (Leído 19,201 veces)
The Last Hero

Desconectado Desconectado

Mensajes: 40


Lucha hasta el final


Ver Perfil
Re: Quitar este error en batch
« Respuesta #10 en: 27 Marzo 2011, 17:33 pm »

Esta vez si ha salido  ;-) ¿que estaba haciendo mal?Y siento haberlo modificado, pero como bien sabes el que no modifica cosas no aprende xD o por lo menos eso decia cuando empece con batch hace un año y medio  :xD

Ahora me salta otra duda, como la que tuvimos en el otro post, en el caso de que se detecten¿como los imprimo en el bloc de notas? osea serian dos partes, una en las que lo detecta y los imprime, y la otra parte la de tu codigo que lo elimina si existe. Es que el codigo para imprimirlo no se si cambiaria al poner ese otro codigo debajo.¿tu que opinas?¿el codigo seria el mismo o uno parecido?porque creo que si hago el del FOR dira que tambien hay un error que no se detecta -_- por cierto,¿a este codigo que me has puesto puedo ponerle los atributos para que los archivos ocultos se muestren y luego eliminarlos?

Osea, que para que este bien tengo que separarlos con el ; y ponerlos alineados.

Bueno un saludo, tengo la esperanza de que este sea lo ultimo que te hago escribir, porque para haber dado hace tiempo batch,solo me acuerdo hasta las sentencias if y for -_-

EDITO:Parece no borrar los archivos, le he añadido uno que esta en el escritorio como bloc de notas y no lo borra...
Gracias de nuevo pitoloko eres un crack  ::)


« Última modificación: 27 Marzo 2011, 17:41 pm por The Last Hero » En línea

SuperDraco


Desconectado Desconectado

Mensajes: 2.505


Crew Dragon


Ver Perfil
Re: Quitar este error en batch
« Respuesta #11 en: 27 Marzo 2011, 18:14 pm »

Pero no decias que para este script no querias usar el bloc de notas ni archivos por separado? xDDDDDDD

EDITO: El script borra archivos ocultos incluido.


Código
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. Set Token=
  4.  
  5. Echo /Arcihvos encontrados: > Archivo.txt
  6. echo+ >> Archivo.txt
  7.  
  8.  
  9. for /f "tokens=1,2,3,4,5,6,7,8,9 delims=;" %%a in ('"echo %Temp%\archivo.exe;%Windir%\archivo1.exe;%Windir%\archivo2.dll;%Windir%\archivo2.exe;%Windir%\Temp\archivo1.tmp;%Windir%\archivo3.exe;"') do (
  10.   Set Token=%%a
  11.   call :Comprobar
  12.   Set Token=%%b
  13.   call :Comprobar
  14.   Set Token=%%c
  15.   call :Comprobar
  16.   Set Token=%%d
  17.   call :Comprobar
  18. )
  19.  
  20. Goto :END
  21.  
  22.  
  23.  
  24.  
  25.  
  26. :Comprobar
  27. IF exist %TOKEN% (
  28.   Del !TOKEN! \f \q \i \s >NUL 2>&1
  29.   Echo !TOKEN! Se ha eliminado.
  30.   Echo !TOKEN! >> Archivo.txt
  31.   goto:eof
  32. ) ELSE (
  33.      Echo !TOKEN! No se ha encontrado.
  34.      Echo !TOKEN! >> Archivo2.txt
  35.      goto:eof
  36. )
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43. :END
  44. cls
  45. echo+ >> Archivo.txt
  46. Echo /Arcihvos no encontrados: >> Archivo.txt
  47. echo+ >> Archivo.txt
  48. copy Archivo.txt+Archivo2.txt >NUL 2>&1
  49. Del /Q Archivo2.txt >NUL 2>&1
  50. Type Archivo.txt




(A mi si que me ha borrado Archivo1.exe de c:\windows :/)
Resultado:

/Arcihvos encontrados:

C:\Windows\archivo1.exe

/Arcihvos no encontrados:

C:\Users\PiToLoKo\AppData\Local\Temp\archivo.exe
C:\Windows\archivo2.dll
C:\Windows\archivo2.exe
Presione una tecla para continuar . . .



En línea

No he vuelto, solo estoy de paso.
The Last Hero

Desconectado Desconectado

Mensajes: 40


Lucha hasta el final


Ver Perfil
Re: Quitar este error en batch
« Respuesta #12 en: 27 Marzo 2011, 18:41 pm »

Lo del bloc de notas, es que tu anterior post pensaba que era cargar las rutas en un archivo.txt,que leyera las lineas y empezara a eliminar, pero no que no creara un repote, de todas maneras perdona fue fallo mio  :-\ En cuanto a tu codigo, puse un archivo1.exe en windows, y si lo elimino, pero si creo un archivo.txt en el escritorio no lo elimina pero sale en no detectados  :o Te pego el codigo:

Citar
@echo off
setlocal enabledelayedexpansion
Set Token=
 
Echo /Arcihvos encontrados: > Archivo.txt
echo+ >> Archivo.txt
 
 
for /f "tokens=1,2,3,4,5,6,7,8,9 delims=;" %%a in ('"echo %userprofile%\Escritorio\detectalo.txt;%Temp%\archivo.exe;%Windir%\archivo1.exe;%Windir%\archivo2.dll;%Windir%\archivo2.exe;%Windir%\Temp\archivo1.tmp;%Windir%\archivo3.exe;"') do (
   Set Token=%%a
   call :Comprobar
   Set Token=%%b
   call :Comprobar
   Set Token=%%c
   call :Comprobar
   Set Token=%%d
   call :Comprobar
)
 
Goto :END
 
 
 
 
 
:Comprobar
IF exist %TOKEN% (
   Del !TOKEN! \f \q \i \s >NUL 2>&1
   Echo !TOKEN! Se ha eliminado.
   Echo !TOKEN! >> Archivo.txt
   goto:eof
) ELSE (
      Echo !TOKEN! No se ha encontrado.
      Echo !TOKEN! >> Archivo2.txt
      goto:eof
)
 
 
 

Muchas gracias por todo y sobre todo por la paciencia,porque creo que estoy durando aqui mucho  :xD

Un saludo
En línea

SuperDraco


Desconectado Desconectado

Mensajes: 2.505


Crew Dragon


Ver Perfil
Re: Quitar este error en batch
« Respuesta #13 en: 27 Marzo 2011, 19:18 pm »

el fallo está en la ruta:

%userprofile%\Escritorio\detectalo.txt


%userprofile%\Desktop\detectalo.txt


Usa el comando DIR para que te muestre los nombres de las carpetas.



EDITO: acabo de fijarme de nuevo en el código, has añadido rutas, acuerdate que entonces debes añadir esto:

Set Token=%%e
   call :Comprobar
Set Token=%%f
   call :Comprobar
Set Token=%%g
   call :Comprobar

Entiendes? , así por cada ruta y numero de tokens
« Última modificación: 27 Marzo 2011, 19:23 pm por pitoloko » En línea

No he vuelto, solo estoy de paso.
The Last Hero

Desconectado Desconectado

Mensajes: 40


Lucha hasta el final


Ver Perfil
Re: Quitar este error en batch
« Respuesta #14 en: 27 Marzo 2011, 20:06 pm »

Tienes toda la razon ahora mismo va perfecto. Solo comentarte un matiz, tu codigo no elimina los archivos ocultos, porque lo probe,quedaria asi:
Código:
attrib -h !TOKEN! 
   Del !TOKEN! \f \q \i \s >NUL 2>&1

Asi me funciono asi por lo menos...Una pregunta,con este codigo tambien puedo englobar procesos en memoria para matarlos?O sera otro para agruparlo en variables y luego taskkill?

Edito:tengo que ir a medida que vaya metiendo mas rutas aumentar lo de los tokens(
tokens=1,2,3,4,5,6,7,8,9 delims=;" ) o eso no hace falta

En cuanto tenga esa duda ya puedes dar por solucionado el tema. Me ha sorprendido tus conocimientos y espero que algun dia hagan moderador ya que te lo tomas en serio  ;)

Un saludo amigo y cuidate
« Última modificación: 27 Marzo 2011, 21:00 pm por The Last Hero » En línea

leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Quitar este error en batch
« Respuesta #15 en: 27 Marzo 2011, 20:20 pm »

@The Last Hero

Usa por favor, las etiquetas de código, para eso están, para el código, no uses las citas para el código.
En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
The Last Hero

Desconectado Desconectado

Mensajes: 40


Lucha hasta el final


Ver Perfil
Re: Quitar este error en batch
« Respuesta #16 en: 27 Marzo 2011, 20:34 pm »

Ok perdona Leo lo tendre en cuenta, es que no suelo anda mucho por foros y claro, no se cual utilizar en cada caso xD
En línea

SuperDraco


Desconectado Desconectado

Mensajes: 2.505


Crew Dragon


Ver Perfil
Re: Quitar este error en batch
« Respuesta #17 en: 27 Marzo 2011, 21:56 pm »

Antes de nada gracias por tu comentario respecto a ser moderador xDD

Vale, a ver, te explico:

Código
  1. for /f "tokens=1,2,3 delims=;" %%a in ('"echo Ruta1;Ruta2;Ruta3"') do (
  2.   Set Token=%%a
  3.   call :Comprobar
  4.   Set Token=%%b
  5.   call :Comprobar
  6.   Set Token=%%c
  7.   call :Comprobar
  8. )

Analizemos ese código, a mi manera xD

Tenemos 3 rutas que queremos separar de alguna manera, entonces necesitamos 3 tokens

Tokens=1,2,3

si pones el caracter * al final del último Token,así;
Tokens=1,2,3*

Tomará el resto que quede de palabras/frases/caracteres como un solo Token.

Osea, si el código fuese así:

Código:
for /f "tokens=1,2,3* delims=;" %%a in ('"echo Ruta1;Ruta2;Ruta3,Ruta4,Ruta5"') do 

El token 1 seria Ruta1, el token 2 sería ruta 2, pero el token 3 seria "Ruta3;ruta4;Ruta5;"

Eso debes tenerlo en cuenta.

Así que respondiendo a tu pregunta, SI, por cada ruta que añadas debes añadir un Token, cada token se guarda en una variable para poder usarla, osea:

Token 1 = %%a
Token 2 = %%b
Token 3 = %%c

Así hasta la  Z

Si los tokens sobrepasan la cantidad del alfabeto A-Z, pues sinceramente no se como se seguiría, no he entrado mucho en esta matería del FOR, yo tambien estoy aprendiendo poco a poco.

Sigamos:
Delims=; es el caracter delimitador, en este caso el más sencillo me pareció el ;, esto significa que entre Ruta1;Ruta2;ruta3; Quedan separadas en tres tokens, token1,token2,token3 (%%a,%%b y %%c)
 

Listo xD.


Saludosss


EDITO:
Tal y como yo te puse el script, si que me borró un archivo oculto, pero bueno, si ya lo has arreglado a tu manera no importa.

Además, puedes usar ese mismo código para los procesos, simplemente cambia las rutas dentro del FOR, por los nombres de los procesos que quieres matar, y cambia el comando del "DEL" por un "Taskkill /F /T /im !TOKEN! >nul 2>&1"
« Última modificación: 27 Marzo 2011, 22:03 pm por pitoloko » En línea

No he vuelto, solo estoy de paso.
The Last Hero

Desconectado Desconectado

Mensajes: 40


Lucha hasta el final


Ver Perfil
Re: Quitar este error en batch
« Respuesta #18 en: 27 Marzo 2011, 22:33 pm »

Pero pitoloko ¿no se podria seguir con numeros?¿o con mas palabras como por ejemplo...

   Set Token=%%ae
   call :Comprobar
   Set Token=%%ba
   call :Comprobar
   Set Token=%%cd
   call :Comprobar

?

Es que tengo mas que 29 letras xD y claro si no se puede hacer mas va a ser un poco complicado... Lo digo porque he hecho multitud de archivos con la condicion if exist y si me dejaba utilizar caracteres numericos...pero no se, pero vamos es que 25 rutas solo no me llega...¿alguna idea? :-\
En línea

SuperDraco


Desconectado Desconectado

Mensajes: 2.505


Crew Dragon


Ver Perfil
Re: Quitar este error en batch
« Respuesta #19 en: 27 Marzo 2011, 22:51 pm »

Ya lo dije, no se si se puede hacer eso...


Lo que si que puedes hacer son 2 FOR, uno con 25 rutas, y luego duplicas ese mismo FOR en algún lugar de tu script, pero con las rutas que te faltan...

Queda un poco chapuzas, pero es una solución.

saludoss

En línea

No he vuelto, solo estoy de paso.
Páginas: 1 [2] 3 4 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Que es este batch ?
Scripting
vicecity 2 4,860 Último mensaje 7 Febrero 2004, 19:51 pm
por vicecity
(Soclucionado) [BATCH] Ayuda con este batch! (%ERRORLEVEL%)
Scripting
SuperDraco 5 14,548 Último mensaje 23 Enero 2011, 15:23 pm
por SuperDraco
que error tengo en este batch
Scripting
jesusandres1 7 4,257 Último mensaje 7 Agosto 2012, 11:58 am
por Puntoinfinito
¿Cual es el error que estoy cometiendo en este comando de batch? [BATCH]
Scripting
TheFerret 3 3,358 Último mensaje 14 Enero 2015, 21:27 pm
por TheFerret
No se esperaba en este momento. Error [Batch]
Scripting
Fron99 3 4,422 Último mensaje 3 Abril 2017, 12:13 pm
por Fron99
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines