Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: The Last Hero en 26 Marzo 2011, 15:02 pm



Título: Quitar este error en batch
Publicado por: The Last Hero en 26 Marzo 2011, 15:02 pm
Hola a todo el mundo. Resulta que he hecho un bat,en el que si existen muchos archivos que los elimine, lo malo es que si no existen los archivos sale un error en la pantalla del bat, y es muy incomodo. Mi pregunta es...¿puedo poner algun codigo para que en vez de que salga-->ERROR:No se puede encontrar el archivo-->c:\tal\tal ponga archivo no encontrado? Es que lo he probado con todo y no sale,os dejo la sintaxis del codigo:

Citar
For %%s IN ("archivo1.exe"
"archivo2.exe"
"archivo3.exe"


) Do (
IF exist "%%s" (Del "%%s" \f

\q \i \s)
)
En cuanto llega a esa parte,imprime el error junto con el del archivo,y no quiero que el error  se vea en la pantalla del batch,solo el que si hay alguno de los nombres los elimine y si no hay que imprima en la pantalla no encontrado. :-\

Espero que me puedan ayudar,muchas gracias por adelantado.


Título: Re: Quitar este error en batch
Publicado por: SuperDraco en 26 Marzo 2011, 16:21 pm
Ya te lo dije la vez anterior... no se si el codigo original es como el que has posteado ahora, pero ese código no elimina nada, solo ejecuta el archivo1, luego el 2, y luego el 3...

Con el código que has posteado, te podrías saltar la parte del For, solo necesitas empezar desde el IF...

De todas formas toma, a ver si te funciona de coña xD...




Código
  1. @echo off
  2. setlocal enabledelayedexpansion
  3.  
  4.  
  5. for /f "tokens=*" %%s in ('"Archivo1.exe"' "Archivo2"') do (
  6. Set Nombre=%%s
  7. IF exist %%s (
  8. Del "%%s" \f \q \i \s >NUL 2>&1
  9. Echo %%s Se ha eliminado.
  10. ) ELSE (
  11. Echo !nombre! No se ha encontrado.
  12. goto:eof
  13. )
  14. )
  15.  



Aunque creo que seria mucho más comodo hacer el for con un type, me refiero a esto:


Dentro de Lista.txt tenemos escritos los nombres de los archivos, solo los nombres, y sin comillas, asi:
Archivo1.exe
Archivo2.exe
Archivo3.exe



Código
  1. @echo off
  2. Set Ruta="C:\TEST"
  3.  
  4.  
  5. for /f "tokens=*" %%s in ('type Lista.txt') do (
  6. IF exist "%%s" (
  7. Del %Ruta%\"%%s" \f \q \i \s >NUL 2>&1
  8. Echo %%s Se ha eliminado.
  9. ) ELSE (
  10. Echo %%s No se ha encontrado.
  11. goto:eof
  12. )
  13. )
  14.  
  15.  



RESULTADO:

Archivo1.exe Se ha eliminado.
Archivo2.exe No se ha encontrado.
Archivo3.exe No se ha encontrado.
Presione una tecla para continuar . . .


Esta bien, solo tenia archivo1 :)



Espero que te sirva de ayuda..

Saludos!


Título: Re: Quitar este error en batch
Publicado por: The Last Hero en 26 Marzo 2011, 16:31 pm
Hola de nuevo pitoloko,he probado de nuevo tu codigo y sigue imprimiendo en el batch archivo no encontrado.El problema es que me gustaria solo que estuviera el batch,nada de bloc de notas,y alguna secuencia que diga borra esto,habia pensado en un if not exist... pero no creo que funciona o incluso en etiquetas goto pero no se... Me gustaria saber alguna forma de que todo se entornara en el batch,sin elementos externos como bloc de notas etc...

Gracias de nuevo por tu colaboracion...

Un saludo


Título: Re: Quitar este error en batch
Publicado por: SuperDraco en 26 Marzo 2011, 17:13 pm
Entonces ponte a crear variables...


Código
  1. @echo off
  2. setlocal enabledelayedexpansion
  3.  
  4.  
  5. for /f "tokens=1,2,3,4,5,6,7,8,9 delims=;" %%a in ('"echo c:\d\Archivo1.exe;C:\Windows\system32\xupala\xupalaaaaVIRUS.exe;c:\tikitaka\virus del tikitaka.rom"') do (
  6. echo %%a
  7. echo %%b
  8. echo %%c
  9. )
  10. IF exist %TOKEN% (
  11. Del !TOKEN! \f \q \i \s >NUL 2>&1
  12. Echo !TOKEN! Se ha eliminado.
  13. ) ELSE (
  14.   Echo !TOKEN! No se ha encontrado.
  15.   goto:eof
  16. )
  17. )
  18.  
  19.  
  20.  



El codigo no va,pero puedes probarlo para ver el resultado primero, el problema es que no se me ocurre como crear la variable para cada Token :/ , pero mira, es una idea que te doy xDDDDDD esta vez no t lo voy a poder solucionar, ya veré si se me ocurre algo, saludosss


Título: Re: Quitar este error en batch
Publicado por: SuperDraco en 26 Marzo 2011, 17:27 pm
Listo:

Cada token es una variable, osea:

tokens=   1            2         3           4
Variabl=%%a   %%b   %%c   %%d



A ver si este te sirve :P





Código
  1.  
  2. @echo off
  3. setlocal enabledelayedexpansion
  4. Set Token=
  5.  
  6. for /f "tokens=1,2,3,4,5,6,7,8,9 delims=;" %%a in ('"echo c:\d\Archivo1.exe;c:\d\ARCHIVO2.exe;C:\Windows\system32\xupala\xupalaaaaVIRUS.exe;c:\tikitaka\virus del tikitaka.rom;"') do (
  7. Set Token=%%a
  8. call :Comprobar
  9. Set Token=%%b
  10. call :Comprobar
  11. Set Token=%%c
  12. call :Comprobar
  13. Set Token=%%d
  14. call :Comprobar
  15. )
  16.  
  17.  
  18. :Comprobar
  19. IF exist %TOKEN% (
  20. Del !TOKEN! \f \q \i \s >NUL 2>&1
  21. Echo !TOKEN! Se ha eliminado.
  22. ) ELSE (
  23.   Echo !TOKEN! No se ha encontrado.
  24.  
  25.   goto:eof
  26. )
  27.  

 
 


Título: Re: Quitar este error en batch
Publicado por: leogtz en 26 Marzo 2011, 17:33 pm
Lo primero que debiste de decir, es "en donde estarán los archivos a eliminar", o en donde se supone que deberían estar, es por eso que estamos teniendo problemas de archivos no encontrados.

Código
  1. cd ALGUNA_RUTA_DONDE_PODRIAN_ESTAR_LOS_ARCHIVOS
  2. for /f "tokens=*" %%f in ("file_1.txt", "file_2.txt", "file_3.txt") do (
  3. for /f "tokens=*" %%_ in ('dir /b /s "%%f"') do (
  4. del /f /q "%%_"
  5. )
  6. )


Título: Re: Quitar este error en batch
Publicado por: The Last Hero en 27 Marzo 2011, 12:34 pm
Buenas de nuevo,puse esta secuencia y me da otro tipo de error  :xD algo de comando me dio tiempo a leer:

Citar
@echo off
setlocal enabledelayedexpansion
Set Token=
 
for /f "tokens=1,2,3,4,5,6,7,8,9 delims=;" %%a in ('"%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
)
 
PAUSE
 
:Comprobar
IF exist %TOKEN% (
   Del !TOKEN! \f \q \i \s >NUL 2>&1
   Echo !TOKEN! Se ha eliminado.
) ELSE (
      Echo !TOKEN! No se ha encontrado.
 
      goto:eof
)

En cuanto a tu respuesta Leo, es que son en varios directorios,temp,windows,system32,escritorio...por eso no puedo especificar todos.

Gracias a ambos por la paciencia y por la participacion  ;-)

Un saludo


Título: Re: Quitar este error en batch
Publicado por: SuperDraco en 27 Marzo 2011, 16:43 pm
aldita sea, pero ponle el ECHO dentro del for '¬¬ no modifiques tanto el ejemplo que te puse xD, pruebalo solo cambiandlo las rutas de los archivos, no le quites el echo y deja las comillas como estan, y di si asi te va, al menos a mi si me fue :P

saludosss



Código:
for /f "tokens=1,2,3,4,5,6,7,8,9 delims=;" %%a in ('"echo %Temp%\archivo.exe;%Windir%\archivo1.exe;etc..."')


PD: El ejemplo de Leo es buenisimo y muy simple, es la diferencia entre el y yo jaja el te pone los buenos :xD y yo los mediocres, pero el mio tambien sirve! ponle el echo.


Título: Re: Quitar este error en batch
Publicado por: The Last Hero en 27 Marzo 2011, 16:57 pm
Nada,sigue igual,un error y se cierra la pantalla,con el echo incluido -_-"

Citar
@echo off
setlocal enabledelayedexpansion
Set Token=
 
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 (
   Set Token=%%a
   call :Comprobar
   Set Token=%%b
   call :Comprobar
   Set Token=%%c
   call :Comprobar
   Set Token=%%d
   call :Comprobar
)
 
PAUSE
 
:Comprobar
IF exist %TOKEN% (
   Del !TOKEN! \f \q \i \s >NUL 2>&1
   Echo !TOKEN! Se ha eliminado.
) ELSE (
      Echo !TOKEN! No se ha encontrado.
 
      goto:eof
)

[/b]



Título: Re: Quitar este error en batch
Publicado por: SuperDraco en 27 Marzo 2011, 17:05 pm
En serio, es pa matarte... xd


Código:
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 (

así es como te digo, NO LO CAMBIES, PRUEBALO ASÍ.


rESULTADO:
C:\Users\PiToLoKo\AppData\Local\Temp\archivo.exe No se ha encontrado.
C:\Windows\archivo1.exe No se ha encontrado.
C:\Windows\archivo2.dll No se ha encontrado.
C:\Windows\archivo2.exe No se ha encontrado.
Presione una tecla para continuar . . .



Título: Re: Quitar este error en batch
Publicado por: The Last Hero 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  ::)


Título: Re: Quitar este error en batch
Publicado por: SuperDraco 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 . . .



Título: Re: Quitar este error en batch
Publicado por: The Last Hero 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


Título: Re: Quitar este error en batch
Publicado por: SuperDraco 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


Título: Re: Quitar este error en batch
Publicado por: The Last Hero 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


Título: Re: Quitar este error en batch
Publicado por: leogtz 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.


Título: Re: Quitar este error en batch
Publicado por: The Last Hero 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


Título: Re: Quitar este error en batch
Publicado por: SuperDraco 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"


Título: Re: Quitar este error en batch
Publicado por: The Last Hero 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? :-\


Título: Re: Quitar este error en batch
Publicado por: SuperDraco 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



Título: Re: Quitar este error en batch
Publicado por: The Last Hero en 27 Marzo 2011, 23:05 pm
Te dejo el de los scripts para que le eches un vistazo,ya que se me cierra la ventana:

Código:
@echo off
for /f "tokens=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19 delims=;" %%b in ('"echo arc1.exe;arch2.exe;arch3.exe;arch4.exe;arch5.exe;arch6.exe;arch7.exe;arch8.exe;arch9.exe;arch10.exe;arch11.exe;arch12.exe;arch13.exe;arch14.exe;arch15.exe;arch16.exe;arch17.exe;arch18.exe;arch19.exe;arch20.exe;arch21.exe;arch22.exe;arch23.exe;arch24.exe;arch25.exe;arch26.exe"') do (

   Set Token=%%a
   call :Comprobarpro
   Set Token=%%b
   call :Comprobarpro
   Set Token=%%c
   call :Comprobarpro
   Set Token=%%d
   call :Comprobarpro
Set Token=%%e
   call :Comprobarpro
Set Token=%%f
   call :Comprobarpro
Set Token=%%h
call :Comprobarpro
Set Token=%%i
call :Comprobarpro
Set Token=%%j
call :Comprobarpro
Set Token=%%k
call :Comprobarpro
Set Token=%%l
call :Comprobarpro
Set Token=%%m
call :Comprobarpro
Set Token=%%n
call :Comprobarpro
Set Token=%%ñ
call :Comprobarpro
Set Token=%%o
call :Comprobarpro
Set Token=%%p
call :Comprobarpro
Set Token=%%q
call :Comprobarpro
Set Token=%%r
call :Comprobarpro
Set Token=%%s
call :Comprobarpro
Set Token=%%t
call :Comprobarpro
Set Token=%%u
call :Comprobarpro
Set Token=%%v
call :Comprobarpro
Set Token=%%w
call :Comprobarpro
Set Token=%%x
call :Comprobarpro
Set Token=%%y
call :Comprobarpro
Set Token=%%z
call :Comprobarpro





)
 
Goto :END
 
 
 
 
 
:Comprobarpro
IF exist %TOKEN% (
attrib -h !TOKEN!
   Taskkill !TOKEN! \f \q \i \s >NUL 2>&1
   Echo !TOKEN! Se ha eliminado procesos en la memoria
   Echo !TOKEN! >> Archivo.txt
   goto:eof
) ELSE (
      Echo !TOKEN! No se ha encontrado procesos en la memoria
      Echo !TOKEN! >> Archivo2.txt
      goto:eof
)
 
 
 
 
 
 
:END
cls
echo+ >> Archivo.txt
Echo /Arcihvos no encontrados: >> Archivo.txt
echo+ >> Archivo.txt
copy Archivo.txt+Archivo2.txt >NUL 2>&1
Del /Q Archivo2.txt >NUL 2>&1
Type Archivo.txt
PAUSE >nul

No se que hice mal esta vez,pero vuelve a cerrarse y no deja leer nada -_- debajo de este esta el de los archivos, este es el de proceso. y le cambie el nombre a comprbarpro para que no se liara con el otro comprobar.

En cuanto a duplicar el for...seria uno como este y luego debajo otro igual pero con las rutas cambiadas?¿se tienen que poner las rutas una detras de otra o se pueden poner en columnas?

Un saludo amigo ::)


Título: Re: Quitar este error en batch
Publicado por: SuperDraco en 27 Marzo 2011, 23:33 pm
no uses la Ñ

Retiro lo dicho, a mi me funciona xD

le pusiste el setlocal enabledelayedexpansion? ponselo


Título: Re: Quitar este error en batch
Publicado por: The Last Hero en 27 Marzo 2011, 23:35 pm
Madre mia... aunque cambie la ñ se cierra la pantalla,¿Ves algun error por ahi? es que lo estoy repasando y no veo nada. He quitado lo de attrib -h pero sigue sin funcionar... creo que he puesto algo mal en el codigo o no se...


Título: Re: Quitar este error en batch
Publicado por: SuperDraco en 27 Marzo 2011, 23:37 pm
Sin la Ñ, desde un script no la puedes escribir de ese modo.


El bat no se me cierra, debes estar haciendo alguna tonteria xD

EDITO: No no se puede poner en columnas. y sería algo asi:

aqui va el Primer FOR
aqui el Segundo FOR
Goto :end

aqui comprobar
aqui ComprobarPRO
aqui END



Código
  1. @echo off
  2. setlocal enabledelayedexpansion
  3.  
  4. for /f "tokens=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19 delims=;" %%a in ('"echo arc1.exe;arch2.exe;arch3.exe;arch4.exe;arch5.exe;arch6.exe;arch7.exe;arch8.exe;arch9.exe;arch10.exe;arch11.exe;arch12.exe;arch13.exe;arch14.exe;arch15.exe;arch16.exe;arch17.exe;arch18.exe;arch19.exe;arch20.exe;arch21.exe;arch22.exe;arch23.exe;arch24.exe;arch25.exe;arch26.exe"') do (
  5.  
  6.   Set Token=%%a
  7.   call :Comprobarpro
  8.   Set Token=%%b
  9.   call :Comprobarpro
  10.   Set Token=%%c
  11.   call :Comprobarpro
  12.   Set Token=%%d
  13.   call :Comprobarpro
  14. Set Token=%%e
  15. call :Comprobarpro
  16. Set Token=%%f
  17. call :Comprobarpro
  18. Set Token=%%h
  19. call :Comprobarpro
  20. Set Token=%%i
  21. call :Comprobarpro
  22. Set Token=%%j
  23. call :Comprobarpro
  24. Set Token=%%k
  25. call :Comprobarpro
  26. Set Token=%%l
  27. call :Comprobarpro
  28. Set Token=%%m
  29. call :Comprobarpro
  30. Set Token=%%n
  31. call :Comprobarpro
  32. Set Token=%%o
  33. call :Comprobarpro
  34. Set Token=%%p
  35. call :Comprobarpro
  36. Set Token=%%q
  37. call :Comprobarpro
  38. Set Token=%%r
  39. call :Comprobarpro
  40. Set Token=%%s
  41. call :Comprobarpro
  42. Set Token=%%t
  43. call :Comprobarpro
  44. Set Token=%%u
  45. call :Comprobarpro
  46. Set Token=%%v
  47. call :Comprobarpro
  48. Set Token=%%w
  49. call :Comprobarpro
  50. Set Token=%%x
  51. call :Comprobarpro
  52. Set Token=%%y
  53. call :Comprobarpro
  54. Set Token=%%z
  55. call :Comprobarpro
  56. )
  57.  
  58. Goto :END
  59.  
  60.  
  61.  
  62.  
  63.  
  64. :Comprobarpro
  65. IF exist %TOKEN% (
  66.   attrib -h "!TOKEN!"
  67.   Taskkill /F /T /im "!TOKEN!" >NUL 2>&1
  68.   Echo !TOKEN! Se ha eliminado procesos en la memoria
  69.   Echo !TOKEN! >> Archivo.txt
  70.   goto:eof
  71. ) ELSE (
  72.      Echo !TOKEN! No se ha encontrado procesos en la memoria
  73.      Echo !TOKEN! >> Archivo2.txt
  74.      goto:eof
  75. )
  76.  
  77.  
  78.  
  79.  
  80.  
  81.  
  82. :END
  83. cls
  84. echo+ >> Archivo.txt
  85. Echo /Arcihvos no encontrados: >> Archivo.txt
  86. echo+ >> Archivo.txt
  87. copy Archivo.txt+Archivo2.txt >NUL 2>&1
  88. Del /Q Archivo2.txt >NUL 2>&1
  89. Type Archivo.txt


Título: Re: Quitar este error en batch
Publicado por: The Last Hero en 28 Marzo 2011, 00:00 am
Te paso el codig entero,esta bien menos lo primero, que me imprime !TOKEN! muchas veces pero no los archivos.

Código:
@echo off
for /f "tokens=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19 delims=;" %%b in ('"echo arc1.exe;arch2.exe;arch3.exe;arch4.exe;arch5.exe;arch6.exe;arch7.exe;arch8.exe;arch9.exe;arch10.exe;arch11.exe;arch12.exe;arch13.exe;arch14.exe;arch15.exe;arch16.exe;arch17.exe;arch18.exe;arch19.exe;arch20.exe;arch21.exe;arch22.exe;arch23.exe;arch24.exe;arch25.exe;arch26.exe"') do (

   Set Token=%%a
   call :Comprobarpro
   Set Token=%%b
   call :Comprobarpro
   Set Token=%%c
   call :Comprobarpro
   Set Token=%%d
   call :Comprobarpro
Set Token=%%e
   call :Comprobarpro
Set Token=%%f
   call :Comprobarpro
Set Token=%%h
call :Comprobarpro
Set Token=%%i
call :Comprobarpro
Set Token=%%j
call :Comprobarpro
Set Token=%%k
call :Comprobarpro
Set Token=%%l
call :Comprobarpro
Set Token=%%m
call :Comprobarpro
Set Token=%%n
call :Comprobarpro
Set Token=%%ñ
call :Comprobarpro
Set Token=%%o
call :Comprobarpro
Set Token=%%p
call :Comprobarpro
Set Token=%%q
call :Comprobarpro
Set Token=%%r
call :Comprobarpro
Set Token=%%s
call :Comprobarpro
Set Token=%%t
call :Comprobarpro
Set Token=%%u
call :Comprobarpro
Set Token=%%v
call :Comprobarpro
Set Token=%%w
call :Comprobarpro
Set Token=%%x
call :Comprobarpro
Set Token=%%y
call :Comprobarpro
Set Token=%%z
call :Comprobarpro





)
 
Goto :END
 
 
 
 
 
:Comprobarpro
IF exist %TOKEN% (
   Taskkill !TOKEN! \f \im >NUL 2>&1
   Echo !TOKEN! Se ha eliminado procesos en la memoria
   Echo !TOKEN! >> Archivo.txt
   goto:eof
) ELSE (
      Echo !TOKEN! No se ha encontrado procesos en la memoria
      Echo !TOKEN! >> Archivo2.txt
      goto:eof
)
 
 
 
 
 
 
:END
cls
echo+ >> Archivo.txt
Echo /Arcihvos no encontrados: >> Archivo.txt
echo+ >> Archivo.txt
copy Archivo.txt+Archivo2.txt >NUL 2>&1
Del /Q Archivo2.txt >NUL 2>&1
Type Archivo.txt
PAUSE >nul


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%\Desktop\lista.txt;%Temp%\archivo.exe;%Windir%\archivo1.exe;%Windir%\archivo2.dll;%Windir%\archivo2.exe;%Windir%\Temp\archivo1.tmp;%Windir%\archivo3.exe;%userprofile%\Desktop\archivo1.exe;"') do (
   Set Token=%%a
   call :Comprobar
   Set Token=%%b
   call :Comprobar
   Set Token=%%c
   call :Comprobar
   Set Token=%%d
   call :Comprobar
Set Token=%%e
   call :Comprobar
Set Token=%%f

   call :Comprobar
Set Token=%%h




)
 
Goto :END
 
 
 
 
 
:Comprobar
IF exist %TOKEN% (
attrib -h !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
)
 
 
 
 
 
 
:END
cls
echo+ >> Archivo.txt
Echo /Arcihvos no encontrados: >> Archivo.txt
echo+ >> Archivo.txt
copy Archivo.txt+Archivo2.txt >NUL 2>&1
Del /Q Archivo2.txt >NUL 2>&1
Type Archivo.txt
PAUSE >nul


Título: Re: Quitar este error en batch
Publicado por: SuperDraco en 28 Marzo 2011, 04:02 am
Voy a ser bueno...

setlocal enabledelayedexpansion

setlocal enabledelayedexpansion

 !!!!!!!!!!!!!!!!! setlocal enabledelayedexpansion !!!!!!!!!!!!!!!!!!!!!


Si es que no te miras mis comentarios he xd


Título: Re: Quitar este error en batch
Publicado por: The Last Hero en 28 Marzo 2011, 07:47 am
Si tienes razon pitoloko,lo tenia en uno pero en el otro no lo puse, es que tantas veces modificar el codigo se deja pasar algo...

Lo he puesto pero me aparece lo de !TOKEN! muchas veces y tambien archivos no encontrados 4 veces y en algunos en vez de aparecer el nombre del archivo aparece %a,%u,%u y asi...

¿como puedo subir una foto para que lo veas?

Ya me contaras.

Edito:te pego el codigo que me dijstes,primeros los FOR luego el goto:end luego el comprobar y comprobarpro y el END:

Código:
@echo off
setlocal enabledelayedexpansion
Set Token=

for /f "tokens=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19 delims=;" %%b in ('"echo arc1.exe;arch2.exe;arch3.exe;arch4.exe;arch5.exe;arch6.exe;arch7.exe;arch8.exe;arch9.exe;arch10.exe;arch11.exe;arch12.exe;arch13.exe;arch14.exe;arch15.exe;arch16.exe;arch17.exe;arch18.exe;arch19.exe;arch20.exe;arch21.exe;arch22.exe;arch23.exe;arch24.exe;arch25.exe;arch26.exe"') do (

   Set Token=%%a
   call :Comprobarpro
   Set Token=%%b
   call :Comprobarpro
   Set Token=%%c
   call :Comprobarpro
   Set Token=%%d
   call :Comprobarpro
Set Token=%%e
   call :Comprobarpro
Set Token=%%f
   call :Comprobarpro
Set Token=%%h
call :Comprobarpro
Set Token=%%i
call :Comprobarpro
Set Token=%%j
call :Comprobarpro
Set Token=%%k
call :Comprobarpro
Set Token=%%l
call :Comprobarpro
Set Token=%%m
call :Comprobarpro
Set Token=%%n
call :Comprobarpro
Set Token=%%g
call :Comprobarpro
Set Token=%%o
call :Comprobarpro
Set Token=%%p
call :Comprobarpro
Set Token=%%q
call :Comprobarpro
Set Token=%%r
call :Comprobarpro
Set Token=%%s
call :Comprobarpro
Set Token=%%t
call :Comprobarpro
Set Token=%%u
call :Comprobarpro
Set Token=%%v
call :Comprobarpro
Set Token=%%w
call :Comprobarpro
Set Token=%%x
call :Comprobarpro
Set Token=%%y
call :Comprobarpro
Set Token=%%z
call :Comprobarpro
 
 

setlocal enabledelayedexpansion
Set Token=
 
 
for /f "tokens=1,2,3,4,5,6,7,8,9 delims=;" %%a in ('"echo %userprofile%\Desktop\lista.txt;%Temp%\archivo.exe;%Windir%\archivo1.exe;%Windir%\archivo2.dll;%Windir%\archivo2.exe;%Windir%\Temp\archivo1.tmp;%Windir%\archivo3.exe;%userprofile%\Desktop\archivo1.exe;"') do (
   Set Token=%%a
   call :Comprobar
   Set Token=%%b
   call :Comprobar
   Set Token=%%c
   call :Comprobar
   Set Token=%%d
   call :Comprobar
Set Token=%%e
   call :Comprobar
Set Token=%%f

   call :Comprobar
Set Token=%%h




)
 
Goto :END

 
:Comprobarpro
IF exist %TOKEN% (
   Taskkill !TOKEN! \f \im >NUL 2>&1
   Echo !TOKEN! Se ha eliminado procesos en la memoria
   Echo !TOKEN! >> Archivo.txt
   goto:eof
) ELSE (
      Echo !TOKEN! No se ha encontrado procesos en la memoria
      Echo !TOKEN! >> Archivo2.txt
      goto:eof
)
 
 
 

 
 
 
 
:Comprobar
IF exist %TOKEN% (
attrib -h !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
)
 
 
 
 
 
 
:END
cls
echo+ >> Archivo.txt
Echo /Arcihvos no encontrados: >> Archivo.txt
echo+ >> Archivo.txt
copy Archivo.txt+Archivo2.txt >NUL 2>&1
Del /Q Archivo2.txt >NUL 2>&1
Type Archivo.txt
PAUSE >nul
Un saludo


Título: Re: Quitar este error en batch
Publicado por: SuperDraco en 28 Marzo 2011, 20:25 pm
Ese último código que has posteado, es como lo tienes ahora mismo? Porque a mi nisiquiera se me "abre" xD dime si es el "bueno" para trabajar con el.


Título: Re: Quitar este error en batch
Publicado por: The Last Hero en 28 Marzo 2011, 20:34 pm
Ahora a mi tampoco xD estaba trasteando un poco, modificandolo y eso, solo cuando pongo el codigo de los archivos funciona genial, pero cuando pongo el de los procesos imprime las variables tal cual estan escritas -->%%a, y muchas veces !TOKEN! ademas aparece la opcion no se ha encontrado dos veces, cuando deberia poner procesos no detectados y no se ha encontrado. Hice uno antes y salia todo menos los de los procesos,eliminando errores en mi script, pero ahora lo he borrado asique mejor empezar con este  :-\

Gracias por la paciencia pitoloko y de nuevo mis disculpas por la pesadez  :xD

Un saludo


Título: Re: Quitar este error en batch
Publicado por: SuperDraco en 28 Marzo 2011, 20:42 pm
Puf, es que este code que te puse ya dijimos que iba bien...

Código
  1. @echo off
  2. setlocal enabledelayedexpansion
  3.  
  4. for /f "tokens=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19 delims=;" %%a in ('"echo arc1.exe;arch2.exe;arch3.exe;arch4.exe;arch5.exe;arch6.exe;arch7.exe;arch8.exe;arch9.exe;arch10.exe;arch11.exe;arch12.exe;arch13.exe;arch14.exe;arch15.exe;arch16.exe;arch17.exe;arch18.exe;arch19.exe;arch20.exe;arch21.exe;arch22.exe;arch23.exe;arch24.exe;arch25.exe;arch26.exe"') do (
  5.  
  6.   Set Token=%%a
  7.   call :Comprobarpro
  8.   Set Token=%%b
  9.   call :Comprobarpro
  10.   Set Token=%%c
  11.   call :Comprobarpro
  12.   Set Token=%%d
  13.   call :Comprobarpro
  14. Set Token=%%e
  15. call :Comprobarpro
  16. Set Token=%%f
  17. call :Comprobarpro
  18. Set Token=%%h
  19. call :Comprobarpro
  20. Set Token=%%i
  21. call :Comprobarpro
  22. Set Token=%%j
  23. call :Comprobarpro
  24. Set Token=%%k
  25. call :Comprobarpro
  26. Set Token=%%l
  27. call :Comprobarpro
  28. Set Token=%%m
  29. call :Comprobarpro
  30. Set Token=%%n
  31. call :Comprobarpro
  32. Set Token=%%o
  33. call :Comprobarpro
  34. Set Token=%%p
  35. call :Comprobarpro
  36. Set Token=%%q
  37. call :Comprobarpro
  38. Set Token=%%r
  39. call :Comprobarpro
  40. Set Token=%%s
  41. call :Comprobarpro
  42. Set Token=%%t
  43. call :Comprobarpro
  44. Set Token=%%u
  45. call :Comprobarpro
  46. Set Token=%%v
  47. call :Comprobarpro
  48. Set Token=%%w
  49. call :Comprobarpro
  50. Set Token=%%x
  51. call :Comprobarpro
  52. Set Token=%%y
  53. call :Comprobarpro
  54. Set Token=%%z
  55. call :Comprobarpro
  56. )
  57.  
  58. Goto :END
  59.  
  60.  
  61.  
  62.  
  63.  
  64. :Comprobarpro
  65. IF exist %TOKEN% (
  66.   attrib -h "!TOKEN!"
  67.   Taskkill /F /T /im "!TOKEN!" >NUL 2>&1
  68.   Echo !TOKEN! Se ha eliminado procesos en la memoria
  69.   Echo !TOKEN! >> Archivo.txt
  70.   goto:eof
  71. ) ELSE (
  72.      Echo !TOKEN! No se ha encontrado procesos en la memoria
  73.      Echo !TOKEN! >> Archivo2.txt
  74.      goto:eof
  75. )
  76.  
  77.  
  78.  
  79.  
  80.  
  81.  
  82. :END
  83. cls
  84. echo+ >> Archivo.txt
  85. Echo /Arcihvos no encontrados: >> Archivo.txt
  86. echo+ >> Archivo.txt
  87. copy Archivo.txt+Archivo2.txt >NUL 2>&1
  88. Del /Q Archivo2.txt >NUL 2>&1
  89. Type Archivo.txt



Ya me canso de hacerlo por ti xD tus fallos son muy tontos , no son fallos grandes, es que no te fijas mucho en lo que haces... en el último code que has posteado le falta un parentesis al acabar el for :/


Solo tienes que meter :ComprobarPRO debajo de :Comprobar, y un for debajo del FOR que ya está echo (En el script de ahora)

Ah, y no empieces el for con "%%b", puedes hacer todos los que quieras empezando por %%a

saludosss


Título: Re: Quitar este error en batch
Publicado por: The Last Hero en 28 Marzo 2011, 21:22 pm
Bueno ya hice todo el codigo bien y lo he repasado,sin embargo los procesos y los archivos se unen en una columna. Por ejemplo en archivos no encontrados, aparecen los procesos y los archivos,pero no estan separados por procesos y archivos.

Código:
/Arcihvos no encontrados: 
 
arc1.exe
arch2.exe
arch3.exe
arch4.exe
arch5.exe
arch6.exe
arch8.exe
arch9.exe
arch10.exe
arch11.exe
arch12.exe
arch13.exe
arch14.exe
arch15.exe
arch16.exe
arch17.exe
arch18.exe
arch19.exe
C:\Users\Rafa\Desktop\lista.txt
C:\Users\Rafa\AppData\Local\Temp\archivo.exe
C:\Windows\archivo1.exe
C:\Windows\archivo2.dll
C:\Windows\archivo2.exe
C:\Windows\Temp\archivo1.tmp

Te pego el codigo del batch,espero que este todo bien:

Código:
setlocal enabledelayedexpansion
 Set Token=

for /f "tokens=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19 delims=;" %%a in ('"echo arc1.exe;arch2.exe;arch3.exe;arch4.exe;arch5.exe;arch6.exe;arch7.exe;arch8.exe;arch9.exe;arch10.exe;arch11.exe;arch12.exe;arch13.exe;arch14.exe;arch15.exe;arch16.exe;arch17.exe;arch18.exe;arch19.exe;arch20.exe;arch21.exe;arch22.exe;arch23.exe;arch24.exe;arch25.exe;"') do (
 
   Set Token=%%a
   call :Comprobarpro
   Set Token=%%b
   call :Comprobarpro
   Set Token=%%c
   call :Comprobarpro
   Set Token=%%d
   call :Comprobarpro
Set Token=%%e
call :Comprobarpro
Set Token=%%f
call :Comprobarpro
Set Token=%%h
call :Comprobarpro
Set Token=%%i
call :Comprobarpro
Set Token=%%j
call :Comprobarpro
Set Token=%%k
call :Comprobarpro
Set Token=%%l
call :Comprobarpro
Set Token=%%m
call :Comprobarpro
Set Token=%%n
call :Comprobarpro
Set Token=%%o
call :Comprobarpro
Set Token=%%p
call :Comprobarpro
Set Token=%%q
call :Comprobarpro
Set Token=%%r
call :Comprobarpro
Set Token=%%s
call :Comprobarpro

)
 
 
 
 
 
 

setlocal enabledelayedexpansion
Set Token=
 
 
for /f "tokens=1,2,3,4,5,6,7,8,9 delims=;" %%a in ('"echo %userprofile%\Desktop\lista.txt;%Temp%\archivo.exe;%Windir%\archivo1.exe;%Windir%\archivo2.dll;%Windir%\archivo2.exe;%Windir%\Temp\archivo1.tmp;%Windir%\archivo3.exe;%userprofile%\Desktop\archivo1.exe;"') do (
   Set Token=%%a
   call :Comprobar
   Set Token=%%b
   call :Comprobar
   Set Token=%%c
   call :Comprobar
   Set Token=%%d
   call :Comprobar
Set Token=%%e
   call :Comprobar
Set Token=%%f

   call :Comprobar
Set Token=%%h




)
 
Goto :END

 
:Comprobarpro
IF exist %TOKEN% (
 
   Taskkill /F /T /im "!TOKEN!" >NUL 2>&1
   Echo !TOKEN! Se ha eliminado procesos en la memoria
   Echo !TOKEN! >> Archivo.txt
   goto:eof
) ELSE (
      Echo !TOKEN! No se ha encontrado procesos en la memoria
      Echo !TOKEN! >> Archivo2.txt
      goto:eof
)
 
 
 

 
 
 
 
:Comprobar
IF exist %TOKEN% (
attrib -h !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
)
 
 
 
 
 
 
:END
cls
echo+ >> Archivo.txt
Echo /Arcihvos no encontrados: >> Archivo.txt
echo+ >> Archivo.txt
copy Archivo.txt+Archivo2.txt >NUL 2>&1
Del /Q Archivo2.txt >NUL 2>&1
Type Archivo.txt
PAUSE >nul

Creo que esta todo bien, pero solo me sale este error.¿este codigo esta completamente listo para eliminar cualquier proceso y luego eliminar el programa, por muy fuerte que sea?

Bueno y es normal que te canses,asique si le das el visto bueno lo damos esto por solucionado y ya me encargo yo,que tu lo has hecho todo -_-"

Muchas gracias por todo y un saludo


Título: Re: Quitar este error en batch
Publicado por: SuperDraco en 28 Marzo 2011, 21:43 pm
En un rato más tarde me lo repaso, será en un par de horas lo siento, pero mientras te respondo a tu pregunta:

De la manera que se usa DEL y TASKKILL en tu script, lo borra y lo mata segurisimo.
A no ser que.........................

...........Para aumentar la eficacia, te diré 2 cosas:

1.
Código:
takeown /F "RUTA_DEL_ARCHIVO" /D S >nul
icacls "RUTA_DEL_ARCHIVO" /grant Administradores:(D,WDAC) /T >nul

Con ese comando obtienes los privilegios del archivo, esto es útil si el Pc en donde va a ser usado tu batch, el usuario no es administrador y no puede manejar archvos de las otras cuentas siendo un usuario limitado...

2.
No se si lo has pensado, tampoco se si sería útil en tu caso, pero recuerda que siempre puedes implementar en tu script un antivirus.

Ej. A-Squared es gratis, se puede usar mediante la línea de comandos (Como casi todos) pero este me gusta bastante por la rapidez y lo poco que pesa con las firmas.




Código:
a2cmd.exe [path] | [parameters]

Scan parameters (can be used together):

   /f=[], /files=[path]   Scan files. Full path to file or folder required
   /quick                 Scans all active programs, Spyware Traces and
                          TrackingCookies
   /smart                 Good and fast result, but only important folders will
                          be scanned
   /deep                  Slowest scan. All files on all hard disks will be
                          scanned deeply
   /m, /memory            Scan Memory for active Malware
   /t, /traces            Scan for Spyware Traces
   /c, /cookies           Scan for Tracking Cookies

   /fh=[handle] /pid=[PID]            Scan file by handle. Process ID of the
                                      handle is required
   /b=[pointer] /bs=[size] /pid=[PID] Scan buffer. Buffer size and process ID


En tu caso sería, despues de haber eliminado el archivo con DEL, y haber matado el proceso con TASKKILL, pues una última comprobación en esa carpeta haciendo un:

Código:
a2cmd.exe /F="RUTA_DEL_ARCHIVO" /heuristic /archive /delete >NUL >2>&1

Con el >NUL para no mostrar nada en la pantalla... si encuentra algo lo elimina.

Si te ha gustado la idea del antivirus, te diré que con las firmas mas nuevas ocupa unos 80 mb xD. y claro, se puede hacer portable comprimiendolo en un solo ejecutable. Dentro de un rato lo subiré al post ese que he echo de utilidades para el cmd xDDD

Saludosss


Título: Re: Quitar este error en batch
Publicado por: The Last Hero en 28 Marzo 2011, 21:50 pm
Pues es una buena idea lo del antivirus...pero colocarlo en mi batch¿tendria que poner su nombre o estaria incumpliendo algun tipo de derecho?¿como puedo meter diversas funciones que solo me interesen?

Bueno esperare tu respuesta del codigo y si pudieras un ejemplo de como integrar una linea en ese comando,ya que tengo pensado agregar servicios y claves del registro,pero esto lo pensare yo solo a partir de lo que me has dado.

Nuevamente muchas gracias pitoloko y un saludo amigo  ::)


Título: Re: Quitar este error en batch
Publicado por: SuperDraco en 29 Marzo 2011, 03:27 am
lo de las diversas funciones no te he entendido.


Y por otro lado, en el caso de "A-Squared"...
Sin animo de lucro parece que si lo puedes usar como te de la gana xD

EDITO: Pasate por mi post para bajarte la última versión si no te apetece instalar el antivirus :P.
http://foro.elhacker.net/scripting/batch_packs_de_aplicaciones_varias_para_usar_en_batch-t322976.0.html





Copyright and license:
----------------------

  The Emsisoft Commandline Scanner is free for private use.
  For commercial use, cheap standalone licenses can be purchased.
  
  Emsisoft Anti-Malware licenses include as well the Emsisoft Commandline
  Scanner. Please note that special licenses for using the Commandline
  Scanner on servers for scanning the data flow of a third party (e.g. for
  access or mailbox clients) are available on inquiry. If you want to use
  the software to scan multiple workstation PCs remotely, it is required to
  buy Helpdesk Scanner licenses:
  http://www.emsisoft.com/en/software/helpdesk/  
  
  Please contact us on: corporatesales@emsisoft.com


Título: Re: Quitar este error en batch
Publicado por: SuperDraco en 29 Marzo 2011, 05:16 am
¿Estas seguro de que quieres usar el modificador "/S" del comando DEL? es para borrar todos los archivos del subdirectorio... :/

Y te lo repito otra vez.......................................

Código:
C:\>del /i
El modificador no es válido: "i".

MIRATE LA AYUDA DE LOS COMANDOS!

DEL /?

Y dentro del FOR hay que usar 2 porcentajes %% porque si pones uno % no lo reconoce, si pones dos %% lo reconoce cono uno %, si pones tres %%% lo reconoce como dos %%,etc..


Los procesos y los archivos se juntaban en la columna porque los estabas guardando en el mismo archivo de texto. Es que te vuelvo a decir lo mismo, los errores de tus scripts son tonterias, que lo modificas sin fijarte lo suficiente...
____________________________________________________________



Código
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. Set Token=
  4.  
  5. echo /Procesos en memoria: > ArchivoSI.txt
  6.  
  7.  
  8.  
  9. :Procesos
  10. for /f "tokens=1-25 delims=;" %%a in ('"echo proc1.exe;proc2.exe;proc3.exe;proc4.exe;proc5.exe;proc6.exe;proc7.exe;proc8.exe;proc9.exe;proc10.exe;proc11.exe;proc12.exe;proc13.exe;proc14.exe;proc15.exe;proc16.exe;proc17.exe;proc18.exe;proc19.exe;proc20.exe;proc21.exe;proc22.exe;proc23.exe;proc24.exe;proc25.exe;"') do (
  11. Set Token=%%a
  12. call :ComprobarProc
  13. Set Token=%%b
  14. call :ComprobarProc
  15. Set Token=%%c
  16. call :ComprobarProc
  17. Set Token=%%d
  18. call :ComprobarProc
  19. Set Token=%%e
  20. call :ComprobarProc
  21. Set Token=%%f
  22. call :ComprobarProc
  23. Set Token=%%h
  24. call :ComprobarProc
  25. Set Token=%%i
  26. call :ComprobarProc
  27. Set Token=%%j
  28. call :ComprobarProc
  29. Set Token=%%k
  30. call :ComprobarProc
  31. Set Token=%%l
  32. call :ComprobarProc
  33. Set Token=%%m
  34. call :ComprobarProc
  35. Set Token=%%n
  36. call :ComprobarProc
  37. Set Token=%%o
  38. call :ComprobarProc
  39. Set Token=%%p
  40. call :ComprobarProc
  41. Set Token=%%q
  42. call :ComprobarProc
  43. Set Token=%%r
  44. call :ComprobarProc
  45. Set Token=%%s
  46. call :ComprobarProc
  47. Set Token=%%t
  48. call :ComprobarProc
  49. Set Token=%%u
  50. call :ComprobarProc
  51. Set Token=%%v
  52. call :ComprobarProc
  53. Set Token=%%w
  54. call :ComprobarProc
  55. Set Token=%%x
  56. call :ComprobarProc
  57. Set Token=%%y
  58. call :ComprobarProc
  59. Set Token=%%z
  60. call :ComprobarProc
  61. )
  62.  
  63.  
  64.  
  65.  
  66.  
  67. :Archivos
  68. for /f "tokens=1-6 delims=;" %%a in ('"echo %%userprofile%%!!%%Temp%%!!%%Windir%%!!%%Windir%%!!%%Windir%%!!%%Windir%%!!%%Windir%%!!%%userprofile%%\Desktop\archivo1.exe;"') do (
  69.   Set Token=%%a
  70.   call :Comprobar
  71.   Set Token=%%b
  72.   call :Comprobar
  73.   Set Token=%%c
  74.   call :Comprobar
  75.   Set Token=%%d
  76.   call :Comprobar
  77. Set Token=%%e
  78.   call :Comprobar
  79. Set Token=%%f
  80.   call :Comprobar
  81. )
  82. Goto :END
  83.  
  84.  
  85.  
  86.  
  87.  
  88.  
  89.  
  90.  
  91. :ComprobarProc
  92. IF exist %TOKEN% (
  93. Taskkill /F /T /IM "!TOKEN!" >NUL 2>&1
  94. Echo !TOKEN! Se ha eliminado procesos en la memoria.
  95. Echo !TOKEN! >> ProcesosSI.txt
  96. goto:eof
  97. ) ELSE (
  98.        Echo !TOKEN! No se ha encontrado procesos en la memoria.
  99.        Echo !TOKEN! >> ProcesosNO.txt
  100.        goto:eof
  101. )
  102.  
  103.  
  104.  
  105.  
  106. :Comprobar
  107. IF exist %TOKEN% (
  108. attrib -h !TOKEN!
  109. Del  !TOKEN! \f \q /A ARSHIAL >NUL 2>&1
  110. Echo !TOKEN! Se ha eliminado.
  111. Echo !TOKEN! >> ArchivoSI.txt
  112.   goto:eof
  113. ) ELSE (
  114.     Echo !TOKEN! No se ha encontrado.
  115. Echo !TOKEN! >> ArchivoNO.txt
  116. goto:eof
  117. )
  118.  
Aqui falta la parte donde hay que copiar los textos bien, no me apetece modificarla porque no tengo ningún proceso corriendo de prueba ni archivos ahora

le faltan cosas, pero no creo que sea tan dificil '¬¬ o puedes usar la utilidad "combine.exe" de un pack del post mio que te he dicho, es más comodo...

en fin Solo hay que arreglarlo un poco:


 
Código
  1. :END
  2. cls
  3. echo+ >> ArchivoSI.txt
  4. Echo /Archivos no encontrados: >> ArchivoSI.txt
  5. echo+ >> ArchivoSI.txt
  6. copy procesossi+procesosno
  7.  
  8. copy los archivos qsi+los q no >NUL 2>&1
  9.  
  10. Copy los archivos+los procesos
  11. Notepad




El comando del antivirus obviamente iria despues del DEL y el TASKKILL, haces un :Call antivirus debajo de :Call comprobar pero la verdad creo que no hace falta, si con el IF EXIST te dice que no existe...pues no existe, pa que XD

De todas formas sería:

Código:
Antivirus.exe "COMANDO_DEL_ANTIVIRUS_EN_!TOKEN!" >nul 2>&1
goto:eof



Título: Re: Quitar este error en batch
Publicado por: The Last Hero en 29 Marzo 2011, 20:52 pm
Perdona pitoloko por contestar tan tarde, pero tenia un examen xD Bueno muchas gracias por haberme ayudado solo me queda una ultima duda(esta vez si,es una sola xD)¿puedo agregar claves del registro para eliminar y servicios tambien para eliminar de la misma forma que lo hemos hecho con los archivos y los procesos?

Y gracias tambien por la paciencia y el codigo, he aprendido mucho gracias a ti.

Un saludo amigo  ::)


Título: Re: Quitar este error en batch
Publicado por: SuperDraco en 29 Marzo 2011, 21:37 pm
Hombre, si de la misma forma te refieres a dentro de un FOR, pues si, aunque me parece un poco lío hacerlo de esa manera, sería mejor un

Código:
:call regdel

:regdel
REG DELETE "RUTA" >nul
goto:eof

no se, es como lo haría yo,pero lo puedes hacer donde te de la gana, solo hay que hacerlo bien xD

y para los servicios lo haces con el comando SC delete
(Si el servicio se está ejecutando, primero debes pararlo con SC STOP, y tal vez debas deshabilitarlo tambien)


saludosss


Título: Re: Quitar este error en batch
Publicado por: The Last Hero en 29 Marzo 2011, 22:45 pm
Si eso pensaba,primero detenerlo y luego borrarlo,asi borraria mejor los rootkits,que vienen como servicios y ademas el archivo  :xD Bueno por mi tema solucionado y muchas muchas gracias amigo,espero que todo te vaya bien  ;)

Un saludo  ;D