Autor
|
Tema: Quitar este error en batch (Leído 19,201 veces)
|
The Last Hero
Desconectado
Mensajes: 40
Lucha hasta el final
|
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 Ahora me salta otra duda, como la que tuvimos en el otro post, en el caso de que se detecten¿como los imprimo en el bloc de notas? osea serian dos partes, una en las que lo detecta y los imprime, y la otra parte la de tu codigo que lo elimina si existe. Es que el codigo para imprimirlo no se si cambiaria al poner ese otro codigo debajo.¿tu que opinas?¿el codigo seria el mismo o uno parecido?porque creo que si hago el del FOR dira que tambien hay un error que no se detecta -_- por cierto,¿a este codigo que me has puesto puedo ponerle los atributos para que los archivos ocultos se muestren y luego eliminarlos? Osea, que para que este bien tengo que separarlos con el ; y ponerlos alineados. Bueno un saludo, tengo la esperanza de que este sea lo ultimo que te hago escribir, porque para haber dado hace tiempo batch,solo me acuerdo hasta las sentencias if y for -_- EDITO:Parece no borrar los archivos, le he añadido uno que esta en el escritorio como bloc de notas y no lo borra... Gracias de nuevo pitoloko eres un crack
|
|
« Última modificación: 27 Marzo 2011, 17:41 pm por The Last Hero »
|
En línea
|
|
|
|
SuperDraco
Desconectado
Mensajes: 2.505
Crew Dragon
|
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 /Arcihvos encontrados: > 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 ( ) :Comprobar Del !TOKEN! \f \q \i \s >NUL 2 >&1 Echo !TOKEN! Se ha eliminado. Echo !TOKEN! >> Archivo.txt Echo !TOKEN! No se ha encontrado. Echo !TOKEN! >> Archivo2.txt ) :END cls Echo /Arcihvos no encontrados: >> Archivo.txt copy Archivo.txt+Archivo2.txt >NUL 2 >&1 Type Archivo.txt
(A mi si que me ha borrado Archivo1.exe de c:\windows :/) Resultado: /Arcihvos encontrados:
C:\Windows\archivo1.exe
/Arcihvos no encontrados:
C:\Users\PiToLoKo\AppData\Local\Temp\archivo.exe C:\Windows\archivo2.dll C:\Windows\archivo2.exe Presione una tecla para continuar . . .
|
|
|
En línea
|
No he vuelto, solo estoy de paso.
|
|
|
The Last Hero
Desconectado
Mensajes: 40
Lucha hasta el final
|
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 Te pego el codigo: @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 Un saludo
|
|
|
En línea
|
|
|
|
SuperDraco
Desconectado
Mensajes: 2.505
Crew Dragon
|
el fallo está en la ruta:
%userprofile%\Escritorio\detectalo.txt
%userprofile%\Desktop\detectalo.txt
Usa el comando DIR para que te muestre los nombres de las carpetas.
EDITO: acabo de fijarme de nuevo en el código, has añadido rutas, acuerdate que entonces debes añadir esto:
Set Token=%%e call :Comprobar Set Token=%%f call :Comprobar Set Token=%%g call :Comprobar
Entiendes? , así por cada ruta y numero de tokens
|
|
« Última modificación: 27 Marzo 2011, 19:23 pm por pitoloko »
|
En línea
|
No he vuelto, solo estoy de paso.
|
|
|
The Last Hero
Desconectado
Mensajes: 40
Lucha hasta el final
|
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
|
|
« Última modificación: 27 Marzo 2011, 21:00 pm por The Last Hero »
|
En línea
|
|
|
|
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
Desconectado
Mensajes: 3.069
/^$/
|
@The Last Hero
Usa por favor, las etiquetas de código, para eso están, para el código, no uses las citas para el código.
|
|
|
En línea
|
|
|
|
The Last Hero
Desconectado
Mensajes: 40
Lucha hasta el final
|
Ok perdona Leo lo tendre en cuenta, es que no suelo anda mucho por foros y claro, no se cual utilizar en cada caso xD
|
|
|
En línea
|
|
|
|
SuperDraco
Desconectado
Mensajes: 2.505
Crew Dragon
|
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 ( )
Analizemos ese código, a mi manera xD Tenemos 3 rutas que queremos separar de alguna manera, entonces necesitamos 3 tokens Tokens=1,2,3si 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 = %%cAsí hasta la Z Si los tokens sobrepasan la cantidad del alfabeto A-Z, pues sinceramente no se como se seguiría, no he entrado mucho en esta matería del FOR, yo tambien estoy aprendiendo poco a poco. Sigamos: Delims=; es el caracter delimitador, en este caso el más sencillo me pareció el ;, esto significa que entre Ruta1;Ruta2;ruta3; Quedan separadas en tres tokens, token1,token2,token3 (%%a,%%b y %%c) Listo xD. Saludosss EDITO:Tal y como yo te puse el script, si que me borró un archivo oculto, pero bueno, si ya lo has arreglado a tu manera no importa. Además, puedes usar ese mismo código para los procesos, simplemente cambia las rutas dentro del FOR, por los nombres de los procesos que quieres matar, y cambia el comando del "DEL" por un "Taskkill /F /T /im !TOKEN! >nul 2>&1"
|
|
« Última modificación: 27 Marzo 2011, 22:03 pm por pitoloko »
|
En línea
|
No he vuelto, solo estoy de paso.
|
|
|
The Last Hero
Desconectado
Mensajes: 40
Lucha hasta el final
|
Pero pitoloko ¿no se podria seguir con numeros?¿o con mas palabras como por ejemplo... Set Token=%%ae call :Comprobar Set Token=%%ba call :Comprobar Set Token=%%cd call :Comprobar ? Es que tengo mas que 29 letras xD y claro si no se puede hacer mas va a ser un poco complicado... Lo digo porque he hecho multitud de archivos con la condicion if exist y si me dejaba utilizar caracteres numericos...pero no se, pero vamos es que 25 rutas solo no me llega...¿alguna idea?
|
|
|
En línea
|
|
|
|
SuperDraco
Desconectado
Mensajes: 2.505
Crew Dragon
|
Ya lo dije, no se si se puede hacer eso...
Lo que si que puedes hacer son 2 FOR, uno con 25 rutas, y luego duplicas ese mismo FOR en algún lugar de tu script, pero con las rutas que te faltan...
Queda un poco chapuzas, pero es una solución.
saludoss
|
|
|
En línea
|
No he vuelto, solo estoy de paso.
|
|
|
|
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
|
|