Autor
|
Tema: Quitar este error en batch (Leído 19,203 veces)
|
The Last Hero
Desconectado
Mensajes: 40
Lucha hasta el final
|
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. /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: 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
|
|
|
En línea
|
|
|
|
SuperDraco
Desconectado
Mensajes: 2.505
Crew Dragon
|
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.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. 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: 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
|
|
|
En línea
|
No he vuelto, solo estoy de paso.
|
|
|
The Last Hero
Desconectado
Mensajes: 40
Lucha hasta el final
|
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
|
|
|
En línea
|
|
|
|
SuperDraco
Desconectado
Mensajes: 2.505
Crew Dragon
|
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 . 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
|
|
« Última modificación: 29 Marzo 2011, 04:07 am por pitoloko »
|
En línea
|
No he vuelto, solo estoy de paso.
|
|
|
SuperDraco
Desconectado
Mensajes: 2.505
Crew Dragon
|
¿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:\>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... ____________________________________________________________ echo /Procesos en memoria: > ArchivoSI.txt :Procesos 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 ( ) :Archivos for /f "tokens=1-6 delims=;" %%a in ('" echo %%userprofile%%!!%%Temp%%!!%%Windir%%!!%%Windir%%!!%%Windir%%!!%%Windir%%!!%%Windir%%!!%%userprofile%%\Desktop\archivo1.exe;"' ) do ( ) :ComprobarProc Taskkill /F /T /IM " !TOKEN!" >NUL 2 >&1 Echo !TOKEN! Se ha eliminado procesos en la memoria. Echo !TOKEN! >> ProcesosSI.txt Echo !TOKEN! No se ha encontrado procesos en la memoria. Echo !TOKEN! >> ProcesosNO.txt ) :Comprobar attrib -h !TOKEN! Del !TOKEN! \f \q /A ARSHIAL >NUL 2 >&1 Echo !TOKEN! Se ha eliminado. Echo !TOKEN! >> ArchivoSI.txt Echo !TOKEN! No se ha encontrado. Echo !TOKEN! >> ArchivoNO.txt )
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: :END cls Echo /Archivos no encontrados: >> ArchivoSI.txt copy procesossi+procesosno copy los archivos qsi+los q no >NUL 2 >&1 Copy los archivos+los procesos 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: Antivirus.exe "COMANDO_DEL_ANTIVIRUS_EN_!TOKEN!" >nul 2>&1 goto:eof
|
|
« Última modificación: 29 Marzo 2011, 05:29 am por pitoloko »
|
En línea
|
No he vuelto, solo estoy de paso.
|
|
|
The Last Hero
Desconectado
Mensajes: 40
Lucha hasta el final
|
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
|
|
|
En línea
|
|
|
|
SuperDraco
Desconectado
Mensajes: 2.505
Crew Dragon
|
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 :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
|
|
|
En línea
|
No he vuelto, solo estoy de paso.
|
|
|
The Last Hero
Desconectado
Mensajes: 40
Lucha hasta el final
|
Si eso pensaba,primero detenerlo y luego borrarlo,asi borraria mejor los rootkits,que vienen como servicios y ademas el archivo Bueno por mi tema solucionado y muchas muchas gracias amigo,espero que todo te vaya bien Un saludo
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Que es este batch ?
Scripting
|
vicecity
|
2
|
4,860
|
7 Febrero 2004, 19:51 pm
por vicecity
|
|
|
(Soclucionado) [BATCH] Ayuda con este batch! (%ERRORLEVEL%)
Scripting
|
SuperDraco
|
5
|
14,548
|
23 Enero 2011, 15:23 pm
por SuperDraco
|
|
|
que error tengo en este batch
Scripting
|
jesusandres1
|
7
|
4,257
|
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
|
14 Enero 2015, 21:27 pm
por TheFerret
|
|
|
No se esperaba en este momento. Error [Batch]
Scripting
|
Fron99
|
3
|
4,422
|
3 Abril 2017, 12:13 pm
por Fron99
|
|