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:
CitarFor %%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.
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...
@echo off
setlocal enabledelayedexpansion
for /f "tokens=*" %%s in ('"Archivo1.exe"' "Archivo2"') do (
Set Nombre=%%s
IF exist %%s (
Del "%%s" \f \q \i \s >NUL 2>&1
Echo %%s Se ha eliminado.
) ELSE (
Echo !nombre! No se ha encontrado.
pause
goto:eof
)
)
pause
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
@echo off
Set Ruta="C:\TEST"
for /f "tokens=*" %%s in ('type Lista.txt') do (
IF exist "%%s" (
Del %Ruta%\"%%s" \f \q \i \s >NUL 2>&1
Echo %%s Se ha eliminado.
) ELSE (
Echo %%s No se ha encontrado.
goto:eof
)
)
pause
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!
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
Entonces ponte a crear variables...
@echo off
setlocal enabledelayedexpansion
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 (
echo %%a
echo %%b
echo %%c
pause
)
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
)
)
pause
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
Listo:
Cada token es una variable, osea:
tokens= 1 2 3 4
Variabl=%%a %%b %%c %%d
A ver si este te sirve :P
@echo off
setlocal enabledelayedexpansion
Set Token=
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 (
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
)
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.
cd ALGUNA_RUTA_DONDE_PODRIAN_ESTAR_LOS_ARCHIVOS
for /f "tokens=*" %%f in ("file_1.txt", "file_2.txt", "file_3.txt") do (
for /f "tokens=*" %%_ in ('dir /b /s "%%f"') do (
del /f /q "%%_"
)
)
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
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
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.
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]
En serio, es pa matarte... xd
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 . . .
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 ::)
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.
@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 %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
)
: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
(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 . . .
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
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
Tienes toda la razon ahora mismo va perfecto. Solo comentarte un matiz, tu codigo no elimina los archivos ocultos, porque lo probe,quedaria asi:
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
@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.
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
Antes de nada gracias por tu comentario respecto a ser moderador xDD
Vale, a ver, te explico:
for /f "tokens=1,2,3 delims=;" %%a in ('"echo Ruta1;Ruta2;Ruta3"') do (
Set Token=%%a
call :Comprobar
Set Token=%%b
call :Comprobar
Set Token=%%c
call :Comprobar
)
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í:
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"
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? :-\
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
Te dejo el de los scripts para que le eches un vistazo,ya que se me cierra la ventana:
@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 ::)
no uses la Ñ
Retiro lo dicho, a mi me funciona xD
le pusiste el setlocal enabledelayedexpansion? ponselo
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...
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
@echo off
setlocal enabledelayedexpansion
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 (
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
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 /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
)
: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
Te paso el codig entero,esta bien menos lo primero, que me imprime !TOKEN! muchas veces pero no los archivos.
@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
Voy a ser bueno...
setlocal enabledelayedexpansion
setlocal enabledelayedexpansion
!!!!!!!!!!!!!!!!! setlocal enabledelayedexpansion !!!!!!!!!!!!!!!!!!!!!
Si es que no te miras mis comentarios he xd
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:
@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
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.
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
Puf, es que este code que te puse ya dijimos que iba bien...
@echo off
setlocal enabledelayedexpansion
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 (
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
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 /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
)
: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
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
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 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
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 ::)
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
¿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 off
setlocal enabledelayedexpansion
Set Token=
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 (
Set Token=%%a
call :ComprobarProc
Set Token=%%b
call :ComprobarProc
Set Token=%%c
call :ComprobarProc
Set Token=%%d
call :ComprobarProc
Set Token=%%e
call :ComprobarProc
Set Token=%%f
call :ComprobarProc
Set Token=%%h
call :ComprobarProc
Set Token=%%i
call :ComprobarProc
Set Token=%%j
call :ComprobarProc
Set Token=%%k
call :ComprobarProc
Set Token=%%l
call :ComprobarProc
Set Token=%%m
call :ComprobarProc
Set Token=%%n
call :ComprobarProc
Set Token=%%o
call :ComprobarProc
Set Token=%%p
call :ComprobarProc
Set Token=%%q
call :ComprobarProc
Set Token=%%r
call :ComprobarProc
Set Token=%%s
call :ComprobarProc
Set Token=%%t
call :ComprobarProc
Set Token=%%u
call :ComprobarProc
Set Token=%%v
call :ComprobarProc
Set Token=%%w
call :ComprobarProc
Set Token=%%x
call :ComprobarProc
Set Token=%%y
call :ComprobarProc
Set Token=%%z
call :ComprobarProc
)
:Archivos
for /f "tokens=1-6 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
)
Goto :END
:ComprobarProc
IF exist %TOKEN% (
Taskkill /F /T /IM "!TOKEN!" >NUL 2>&1
Echo !TOKEN! Se ha eliminado procesos en la memoria.
Echo !TOKEN! >> ProcesosSI.txt
goto:eof
) ELSE (
Echo !TOKEN! No se ha encontrado procesos en la memoria.
Echo !TOKEN! >> ProcesosNO.txt
goto:eof
)
:Comprobar
IF exist %TOKEN% (
attrib -h !TOKEN!
Del !TOKEN! \f \q /A ARSHIAL >NUL 2>&1
Echo !TOKEN! Se ha eliminado.
Echo !TOKEN! >> ArchivoSI.txt
goto:eof
) ELSE (
Echo !TOKEN! No se ha encontrado.
Echo !TOKEN! >> ArchivoNO.txt
goto:eof
)
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+ >> ArchivoSI.txt
Echo /Archivos no encontrados: >> ArchivoSI.txt
echo+ >> ArchivoSI.txt
copy procesossi+procesosno
copy los archivos qsi+los q no >NUL 2>&1
Copy los archivos+los procesos
Notepad
PAUSE >nul
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
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 ::)
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
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