Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: DA KILLER en 10 Marzo 2012, 03:32 am



Título: [BATCH] Evitar Bucle durante Redireccionamiento Fallido
Publicado por: DA KILLER en 10 Marzo 2012, 03:32 am
Saludos gente, en un script quiero enviar un fichero de texto plano al puerto COM1, pero al estar inhabilitado el programa sólo repite como loro:

"El sistema no puede escribir en el dispositivo especificado."

Ya sé que es lógico que falle si el puerto no tiene conexión, pero lo que quiero es que si falla me devuelva un código de error a los "X" intentos fallidos.

Lo que hice fue:

Código
  1. [...]
  2. TYPE %FILE%.TXT > COM1 && Exit /B 0 || TYPE %FILE%.TXT > COM2 && Exit /B 0
  3. [...]

Sé que la sintaxis está bien porque si cambio los comandos intenta ejecutar la primer instrucción, si es exitosa ejecuta la segunda, si falla en cualquiera de ellas pasa al OR ("||") intenta con la tercer instrucción y si es exitosa ejecuta la cuarta.

EDITO: Agrego que intenté con "if %errorlevel% NEQ 0" y tampoco funcionó :/

Otra cosa que ví hace mucho tiempo era la de redirigir la salida de los errores a otro destino, si no me equivoco era:

Código
  1. COOMANDO | FILTRO >nul 2>&1

Si bien sé que es para que no se vean los códigos de error no entiendo que es "2" y "&1", si me pueden decir bajo que palabras clave buscar más información sobre el tema se los voy a agradecer.

Saludos y desde ya, muchas gracias.

EDITO 2:

Bueno, intenté modificar un poco la línea y la sintaxis es correcta sin lugar a dudas, lo que falla es la conexión con el puerto COM ya que la siguiente línea:

Código
  1. TYPE *.TXT > TEST.TXT && Exit /B 0 || TYPE *.TXT > CON && Exit /B 0

Funciona perfectamente... y si trato de escribir sobre "COM" obtengo el mismo resultado que si quisiese redirigir a "NULL"  :¬¬

En fin lo que quiero evitar es que se repita el mensaje advirtiendo de la falla, saludos y gracias por leer!