Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Eleкtro

#1581
Windows / Re: USB inoperable despues de usar Rufus
12 Noviembre 2017, 16:57 PM
Lo conseguí reparar con el comando diskpart como propuso @Slava_TZD. Muchas gracias a todos.
#1582
Cita de: Meta en 12 Noviembre 2017, 01:04 AMAquí hay un código que pulsando A o C abre o cierras la bandeja del lector, a parte de esto, dice Abierto, Abriendo... Cerrado y Cerrando... Todo esto pulsado las teclas A o C.

Me he dado cuenta que si cierro la bandeja directamente con la mano, en la ventana o en el CMD de C#, no lo sabe, se queda en Abierto. La idea es que si cierro la bandeja con la mano, en la pantalla muestre el mensaje.

¿Esto es posible de hacer?

Tu mismo estás diciendo que lo de "Abriendo..." y "Cerrando..." lo estás imprimiendo por ti mismo cuando pulsas la tecla A o C en la CMD... en ningún momento estás controlando eventos de inserción o eyección de la bandeja del lector, ¿cómo esperas que sea posible hacerlo controlando el input de la CMD?, no tiene sentido xD.

De todas formas MCI solamente sirve para operar con comandos, no es posible detectar/suscribirse a eventos de inserción y eyección de la bandeja del lector de CD-ROM mediante MCI. Pero si con WMI...

Te muestro un ejemplo que escribí hace tiempo en VB.NET y que hace exactamente lo que pides:
Código (vbnet) [Seleccionar]
Imports System.ComponentModel
Imports System.Management

Public NotInheritable Class Form1 : Inherits Form

   Private WithEvents EventWatcher As ManagementEventWatcher

   Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load

       ' https://msdn.microsoft.com/en-us/library/aa394173%28v=vs.85%29.aspx
       Dim eventQuery As New WqlEventQuery(
           eventClassName:="__InstanceModificationEvent",
           condition:="TargetInstance ISA 'Win32_LogicalDisk' AND TargetInstance.DriveType = 5",
           withinInterval:=TimeSpan.FromSeconds(1))

       Dim eventOptions As New EventWatcherOptions With {
           .BlockSize = 1,
           .Timeout = TimeSpan.MaxValue
       }

       Dim scopePath As New ManagementPath With {
           .ClassName = "",
           .NamespacePath = "root\CIMV2",
           .Path = "\\.\root\CIMV2",
           .Server = "."
       }

       Dim scopeOptions As New ConnectionOptions With {
           .Authentication = AuthenticationLevel.Default,
           .EnablePrivileges = True,
           .Impersonation = ImpersonationLevel.Impersonate,
           .Timeout = TimeSpan.MaxValue
       }

       Dim scope As New ManagementScope(scopePath, scopeOptions)

       Me.EventWatcher = New ManagementEventWatcher With {
           .Options = eventOptions,
           .Query = eventQuery,
           .Scope = scope
       }

       Me.EventWatcher.Scope.Connect()
       Me.EventWatcher.Start()

   End Sub

   Private Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
       Me.EventWatcher.Dispose()
   End Sub

   Private Sub EventWatcher_EventArrived(sender As Object, e As EventArrivedEventArgs) Handles EventWatcher.EventArrived

       Using mo As ManagementBaseObject = e.NewEvent

           Dim letter As String = Convert.ToString(mo.Properties("Name").Value).TrimEnd({":"c, "\"c})
           ' Dim volName As String = Convert.ToString(mo.Properties("VolumeName").Value)

           Dim di As DriveInfo = (From item In DriveInfo.GetDrives()
                                  Where item.Name.TrimEnd({":"c, "\"c}) = letter
                                 ).Single()

           If Not String.IsNullOrEmpty(di.VolumeLabel) Then
               Console.WriteLine(String.Format("CD-ROM tray inserted in drive '{0}'.", di.Name))

           Else
               Console.WriteLine(String.Format("CD-ROM tray ejected in drive '{0}'.", di.Name))

           End If

       End Using

   End Sub

End Class


Traducción a C#:

Código (csharp) [Seleccionar]
using System;
using System.IO;
using System.Linq;
using System.Management;
using System.Windows.Forms;

namespace WindowsFormsApp1 {

   public partial class Form1 : Form {

       private ManagementEventWatcher EventWatcher;

       public Form1() {
           this.InitializeComponent();
       }

       private void Form1_Load(object sender, EventArgs e) {

           // https://msdn.microsoft.com/en-us/library/aa394173%28v=vs.85%29.aspx
           WqlEventQuery eventQuery =
               new WqlEventQuery(eventClassName: "__InstanceModificationEvent",
                                 condition: "TargetInstance ISA 'Win32_LogicalDisk' AND TargetInstance.DriveType = 5",
                                 withinInterval: TimeSpan.FromSeconds(1));

           EventWatcherOptions eventOptions = new EventWatcherOptions {
               BlockSize = 1,
               Timeout = TimeSpan.MaxValue
           };

           ManagementPath scopePath = new ManagementPath {
               ClassName = "",
               NamespacePath = @"root\CIMV2",
               Path = @"\\.\root\CIMV2",
               Server = "."
           };

           ConnectionOptions scopeOptions = new ConnectionOptions {
               Authentication = AuthenticationLevel.Default,
               EnablePrivileges = true,
               Impersonation = ImpersonationLevel.Impersonate,
               Timeout = TimeSpan.MaxValue
           };

           ManagementScope scope = new ManagementScope(scopePath, scopeOptions);

           this.EventWatcher = new ManagementEventWatcher {
               Options = eventOptions,
               Query = eventQuery,
               Scope = scope
           };

           this.EventWatcher.Scope.Connect();
           this.EventWatcher.EventArrived += this.EventWatcher_EventArrived;
           this.EventWatcher.Start();
       }

       private void Form1_FormClosing(object sender, FormClosingEventArgs e) {
           this.EventWatcher.Dispose();
       }

       private void EventWatcher_EventArrived(object sender, EventArrivedEventArgs e) {

           using (ManagementBaseObject mo = e.NewEvent) {

               string letter = Convert.ToString(mo.Properties["Name"].Value).TrimEnd(new char[] {':', '\\'});
               // string volName = Convert.ToString(mo.Properties("VolumeName").Value);

               DriveInfo di = (from item in DriveInfo.GetDrives()
                               where item.Name.TrimEnd(new char[] { ':', '\\' }) == letter
                               select item
                              ).Single();

               if (!string.IsNullOrEmpty(di.VolumeLabel)) {
                   Console.WriteLine(string.Format("CD-ROM tray inserted in drive '{0}'.", di.Name));

               } else {
                   Console.WriteLine(string.Format("CD-ROM tray ejected in drive '{0}'.", di.Name));

               }

           }

       }

   }

}


PD: No lo he testeado, ahora mismo no tengo lector de CD instalado, pero debe funcionar... por que en el pasado me funcionó xD.

PD2: Si en lugar de un Form quieres hacerlo a través de una aplicación de consola, entonces tal vez quieras usar el método bloqueante ManagementEventWatcher.WaitForNextEvent() para que no se cierre la instancia de tu programa antes de recibir el próximo evento...

Código (csharp) [Seleccionar]
...
this.EventWatcher.Start();

while (true) {
    this.EventWatcher.WaitForNextEvent();
}
...


Saludos.
#1583
Pequeña actualización: he modificado las teclas de acceso directo, ya que entraban en conflicto con CTRL+V (paste).

El enlace de descarga sigue siendo el mismo, el que está en el post principal.

Un saludo.
#1584
Por si había algún usuario suscrito a este thread, les hago saber que ya compartí la extensión para Visual Studio y el código fuente aquí:


Un saludo.
#1585
Windows / USB inoperable despues de usar Rufus
12 Noviembre 2017, 12:42 PM
Hola. Tengo un problema algo extraño...

El otro día utilicé la aplicación Rufus para grabar una ISO personalizada de Windows 10 en un dispositivo USB, todo bien, pude instalar Windows desde el USB. La unidad USB se quedó con dos particiones por temas del booteo UEFI (esto lo explican detalladamente en la documentación de Rufus).

Bueno, el caso es que despues de la instalación, como ya no me hacia falta seguir teniendo Windows en ese USB, eliminé las dos particiones para formatear la unidad y crear 1 único volumen. El problema es que no puedo formatearlo ni hacer nada con él...

El administrador de discos de windows me reconoce la unidad, pero cuando le doy a "Formatear" o "Eliminar volumen" no ocurre absolutamente nada de nada (no sale error, nada). Si trato de darle a "Formatear" desde "Mi PC", me sale la ventana con las opciones para el formateo, pero no se puede formatear, me sale el siguiente mensaje:



...y he probado con todas las configuraciones posibles para el formateo.

Así que... no sé que hacer. ¿Alguna sugerencia?. ¿A alguien más le ha sucedido esto con Rufus, y cómo lo han conseguido arreglar?.

He probado con el MiniTool Partition Wizard 10, pero nada, no me deja crear un nuevo volumen ni formatear la unidad... pero como ya digo ni tan siquiera el administrador de discos de Windows me deja, así que no será un problema de este tipo... y de todas formas tampoco podría ahora mismo montar un live-cd con una distro de Linux. ¿Alguna otra sugerencia?.

Saludos.
#1586
Estás pidiendo que te craqueen un programa comercial, por el cual estabas pagando tú o tu padre, para ya no pagar nunca más. Lee las reglas del foro.

En realidad no soy partidario de bloquear peticiones de cracks (aunque vaya contra las normas), pero este caso lo considero la excepción por que se trata de un programa con el que tú o tu padre se beneficiaba econemicamente para su negocio, es decir pagar por el programa le era útil para su negocio, ¿y encima quieres ser "tramposo" y tenerlo gratuito?, si el programa le era tan útil a tu padre y le ayudaba a ganar beneficios económicos pues que menos que seguir pagando legálmente por usar el programa, ¿no crees?, es lo justo, pienso yo.

De todas formas si dicho programa requiere de una conexión establecida a Internet no creo que sea por capricho, tal vez la conexión se necesite para autentificar al usuario, validación de licencia, o quizás para conectar a alguna base de datos relacionada con alguna funcionalidad del programa... puede ser muchas cosas, pero eso da igual, por que esto es ilegal.

Cierro el tema.

Saludos
#1587
Scripting / Re: Problema con condigo If Exist y For
12 Noviembre 2017, 06:52 AM
Cita de: xBart en 12 Noviembre 2017, 00:52 AMUna pregunta, ¿es posible que if exit verifique si existe "x" extensión, aunque este esté oculta?

Si, el comando IF por defecto trabaja con archivos ocultos. El que omite archivos ocultos es el FOR, al menos de la forma en la que lo estás usando ahora mismo...

Para que el comando FOR encuentre archivos ocultos, tienes que usar un FOR /F y pasarle como argumento el comando DIR con el modificador /A para listar archivos ocultos:

Código (dos) [Seleccionar]
FOR /F %%# In (
   'Dir /B /A "*.txt", "*.pdf", "*.jpg"'
) Do (
   Echo.%%~f#
)


Como alternativa para trabajar con archivos ocultos también puedes utilizar el comando FORFILES, para una sola extensión:
Código (dos) [Seleccionar]
FORFILES /M "*.txt" -C "CMD.exe /C Echo.@path"

O para múltiples extensiones:
Código (dos) [Seleccionar]
FORFILES -C "CMD.exe /C (If @ext==\"txt\" Echo.@path) & (If @ext==\"pdf\" Echo.@path) & (If @ext==\"jpg\" Echo.@path)"

...También puedes combinar el uso de FOR y FORFILES para acortar esa sintaxis tan fea y larga de FORFILES al trabajar con múltiples extensiones:
Código (dos) [Seleccionar]
FOR %%# In ("txt", "pdf", "jpg") Do (
   (FORFILES -m "*.%%#" -C "CMD.exe /C Echo.@path")2>NUL
)

( Nótese que en esta ocasión a los argumentos/extensiones del FOR no le añadí wildcards, ahora se tratan como un simple Array de cadenas en lugar de patrones de búsqueda, por que como ya dijimos el comando FOR omite archivos ocultos. )




De todas formas Batch es una herramienta muy inutil y limitada incluso para este tipo de tareas, se ha vuelto casi obsoleta. Como ya has podido ver en los ejemplos de arriba, cada uno tiene sus ventajas y sus desventajas. En lugar de utilizar Batch, en Windows te recomiendo encarecidamente utilizar el lenguaje Powershell:

script.ps1
Código (python) [Seleccionar]
[String[]]$files = Get-ChildItem -ErrorAction Continue `
                                -Force `
                                -File `
                                -Path ".\*" `
                                -Include "*.txt", "*.pdf", "*.jpg"

#foreach ($file in $files) {
#    Write-Host $file
#}

If ($files.Count -gt 0) {
   # Se encontró al menos 1 archivo de alguna de las extensiones especificadas.
   Write-Host "Launching Windows Calculator..."
   Start-Process -FilePath "Calc.exe"

} Else {
   # No se encontró ningún archivo.
   Write-Host "Launching MS Paint..."
   Start-Process -FilePath "MSPaint.exe"

}

Exit(0)


Saludos.
#1588
Hardware / Re: ¿Vale la pena overblockear?
11 Noviembre 2017, 18:50 PM
Cita de: JugadorON en 11 Noviembre 2017, 17:40 PMoverblockear

Es overclocking, no "overblocking". Tampoco es overbooking, por si acaso. :P

Su propio nombre lo indica y no debería haber este tipo de confusión, es una práctica relacionada con el aumento de la frecuencia de reloj (entre otro tipo de aumentos) para un dispositivo.

Cita de: JugadorON en 11 Noviembre 2017, 17:40 PM1- ¿Vale la pena overblockear el procesador?

No, teniendo en cuenta que las consecuencias a corto o largo plazo jamás compensarán la pequeña mejora que obtengas en el rendimiento general, ni en esos ridículos (y posibles o no) +1-2 FPS de diferencia en los juegos.

Cita de: JugadorON en 11 Noviembre 2017, 17:40 PM2 - ¿Y la ram?

Tampoco. Ni CPU, ni RAM, ni absolutamente para ningún otro tipo de dispositivo configurable en el ámbito del overclock (ej. una tarjeta gráfica).

Cita de: JugadorON en 11 Noviembre 2017, 17:40 PM¿No se queman?

Si, los casos son infinitos y los seguirá habiendo... por que la gente no aprende y las nuevas generaciones además de inexpertos son muy influenciables y consumistas, te recomendarán hacer overclock por que si, por que "mola", por que "no hay peligro" (ya les llegará su momento a todos ellos), etcétera. En fin. Más te vale no hacer mucho caso a la opinión pública y consumista que se deja llevar por el capricho, y leer más sobre los peligros y buscar videos en Youtube donde te explican con todo detalle los peligros reales de un overclock básico o avanzado y también a como hacer un overclock "seguro". No te lo tomes a mal, pero es que si realmente quieres conocer detalles por tu seguridad entonces no me parece muy lógico que te limites a preguntar esto en un foro, cuando tienes a tu disposición medios como Google o Youtube en el que puedes encontrar infinidad de videos de profesionales informáticos / técnicos especializados en hardware que aclaran todas las dudas que has expuesto, y mucho más.

Aparte de BSODs y cuelgues que pueden provocar en el sistema operativo, es muy facil freir de forma literal un componente, tan solo tienes que pasarte de la ralla en los valores del voltaje, y así puedes destruir en menos de 10 segundos (no es un decir) una tarjeta gráfica que funcionaba bien, por poner ejemplo. Y si, hablo por experiencia propia (aparte de los detalles que conozco por experiencia de otros)... lamentablemente, todos hemos sido alguna vez nuevos, inexpertos e ingenuos con el overclocking, y puede que salga bien, que mejores el rendimiento y no te de ningún tipo de problemas hasta que tengas la necesidad de renovar el PC... ¡pero es que no vale la pena por que la posibilidad de riesgo es alta, y saldría caro!.

Cabe mencionar que hoy en día en cualquier PC te vas a encontrar varios componentes que tienen incorporado su propio sistema de alarma interno (un sensor) que o bien pondrá el componente en "suspensión" (provocando un cuelgue o un BSOD) o bien por otro lado no recuerdo ahora mismo exactamente si era la placa base o la CPU que tiene un sistema (sensor) para apagar el equipo de forma automática para prevenir posibles daños por sobrecalentamiento (exceso de temperatura en general, vaya), pero nada de eso te va a salvar todas las veces por que es un sistema que reduce el riesgo de daño, no lo elimina, y una vez se cause el daño... será irreparable.

Cita de: JugadorON en 11 Noviembre 2017, 17:40 PM¿Y acortan la vida?

Eso dalo por seguro, cualquier manipulación para aumentar la velocidad de operación del dispositivo siempre va a acortar la vida útil de éste, aunque a corto plazo pueda ser algo imperceptible. Esto no es una opinión propia, yo no soy técnico, pero es un hecho comprobado, es la opinión que te dará cualquier técnico profesional especializado (aunque siempre habrá algún "especial" que opine lo contrario, como en todo). A la larga se sufrirán las consecuencias por el capricho de hacer overclocking ya sea por sobrecalentamiento, mal funcionamiento del dispositivo, o acortamiento de vida; de eso último no te salvas, de los otras dos peligros a lo mejor si o a lo mejor tampoco, y además se perderá el derecho al reclamo con la garantía del producto. Yo nisiquiera recomiendo comprar las típicas tarjetas gráficas estas que ya vienen overcloqueadas "de forma segura", lo veo algo absurdo, contraproducente.

Cita de: JugadorON en 11 Noviembre 2017, 17:40 PM¿Tiene riesgos?

Tu mismo ya has mencionado los riesgos más peligrosos.

De todas formas si sigues las instrucciones recomendadas por el fabricante y/o por las comunidades donde te expliquen cuales son los valores seguros ("safe clocks") al realizar el overclock, y suponiendo que no te haya tocado un componente defectuoso en la lotería del mercado del hardware (que eso es otra), entonces en teoría lo más probable estarás fuera de cualquier peligro grave, pero es que eso no importa, sigue sin valer la pena arriesgarse y el tiempo de vida se acortará igual.

En mi humilde opinión no hay un motivo coherente para querer hacer overclock, solo hay muchos adolescentes que han nacido en una era en la que las compañias de hardware han normalizado un hábito peligroso para vender mas (overcloqueas, jodes el dispositivo, y te lo tienes que volver a comprar), y los crios se ponen todos a exprimir su equipo por el capricho de que sea mejor y más rápido y fardar con los demás y ya, pero a una persona responsable con cerebro no le cunde hacer overclock ni lo necesitará hacer... a menos que sea por eso, por capricho, o por un caso muy específico y razonable.

Saludos.
#1589


Telerik Code Converter for Visual Studio

by Elektro Studios

Telerik Code Converter for Visual Studio es una adaptación para Visual Studio del programa gratuito Telerik Code Converter Client for Windows:


Es una extensión para Visual Studio la cual nos permite convertir código entre los lenguajes C# y VB.NET mediante la tecnología avanzada de Telerik ( http://converter.telerik.com/ ), básada en el motor de análisis de código open-source: NRefactory ( https://github.com/icsharpcode/NRefactory ).

El funcionamiento de esta utilidad es simple a la par que eficiente; la aplicación hace uso de la API pública del servicio web de Telerik ( http://converter.telerik.com/service.asmx ) para enviar una petición con el código fuente a traducir, y obtener la respuesta del servidor con el código fuente traducido. Ni más, ni menos. Por ese motivo, si encuentran algún código que devuelva error al intentar convertirlo (puesto que ningún convertidor de código es perfecto)... no me hechen las culpas a mi, sino al convertidor del servicio web Telerik Code convert.




"¿Por qué debería considerar usar esta herramienta en vez de acudir directamente a la página web de Telerik para convertir mis códigos?"...

- Telerik Code Converter for Visual Studio reside a través de un menú contextual en la IDE Visual Studio,
  por lo que nos evita el desperdicio de tiempo para abrir el navegador Web y navegar a la página de Telerik para realizar la conversión de código.

- La extensión provee combinaciones de acceso directo para un ahorro aun mayor de tiempo:

  • Ctrl+E+1: Convertir el código seleccionado a VB.NET.
  • Ctrl+E+2: Convertir el documento entero a VB.NET.
  • Ctrl+E+3: Convertir el código seleccionado a C#.
  • Ctrl+E+4: Convertir el documento entero a C#.

- La extensión se puede configurar para abrir de forma automática las conversiones de código que realicemos, en un editor de texto externo (ej. Notepad).

- Telerik Code Converter for Visual Studio soporta las siguientes versiones de Visual Studio:

  • Visual Studio 2017 Community Edition.
  • Visual Studio 2017 Professional Edition.
  • Visual Studio 2017 Enterprise Edition.
( En teoría le añadí soporte para la edición Community, pero no lo he comprobado, dicha edición es muy limitada y restricta con el uso/instalación de extensiones.
 No tengo intención de añadir soporte para versiones anteriores de Visual Studio. )




Licencia

El programa lo distribuyo tal cual ( "as is" ), sin ningún tipo de licencia, y para darle un uso exclusivamente personal, sin ánimo de lucro.

Les sugiero no intentar comercializar el código fuente de este producto relacionado con Telerik Code Convert ya que los representantes de la compañia Telerik me han advertido de que no se puede comercializar ni tampoco se puede hospedar el proyecto en GitHub. Y creanme... no conviene ser demandado por una compañia como Telerik. Eso sí, el programa y código fuente se puede compartir (como estoy haciendo yo) con pequeñas comunidades / grupos de personas, amigos y etc.

Son libres de modificar el código fuente y redistribuirlo, pero por favor tengan la gentileza de mencionar al autor original ( Elektro ). Sobre comercializarlo o publicarlo en GitHub... ustedes serían los únicos perjudicados con asuntos legales por parte de Telerik, yo ya les he advertido sobre ello.




Imágenes

 











Demostración

Hice un video para enseñarles el modo de empleo de la extensión, el uso de las teclas de acceso directo, y las opciones configurables de la extensión.

[youtube=768,432]https://www.youtube.com/watch?v=rIllBsqgtug[/youtube]




Descarga

La extensión y el código fuente incluido ( desarrollado en el lenguaje VB.NET ) lo comparto EN EXCLUSIVA para la comunidad de foro.elhacker.net. Lo pueden descargar desde el siguiente enlace:



¡¡ QUE LO DISFRUTEN !!

PD: Se aceptan sugerencias, críticas constructivas y destructivas, insultos, collejas, besos, aplausos y donaciones. Para esto último de las donaciones por favor contactar por mensaje privado para enviarles la cuenta de Paypal donde podrían donar (les doy las gracias por adelantado a cualquier buen hombre interesado en donar. ), otra forma de ayudarme a seguir publicando herramientas gratuitas sería adquiriendo el producto que promociono en mi firma de usuario aquí abajo: ElektroKit Framework, con el que se ha extraido y compartido una pequeña parte de su código fuente de forma completamente gratuita para desarrollar gran parte de las funcionalidades de este programa.
#1590
Scripting / Re: Problema con condigo If Exist y For
11 Noviembre 2017, 13:20 PM
Hola. Siento decir que tú código sigue estando mal... primero de todo las etiquetas/subrutinas (:del, :sla) no deben ir nunca dentro del bloque de un búcle, puedes hacerlo, pero es contraproducente y solo conseguirás escribir un código espaguetti. Segundo, la comprobación que pretendes hacer de si el archivo existe o no existe es algo innecesario debido a que si el FOR inicia la iteración entonces ya significa que encontró al menos 1 archivo del patrón de búsqueda de múltiples extensiones que le asignaste...

SI no he entendido mal, si existe al menos 1 archivo de extensión txt,pdf o jpg quieres iniciar la calculadora de Windows, de lo contrario quieres iniciar el MS Paint, pues bien, en ese caso puedes simplificar el código de la siguiente manera:

Código (dos) [Seleccionar]
@Echo OFF

FOR %%# in ("*.txt", "*.pdf", "*.jpg") DO (
   REM Iniciar Calculadora de Windows...
   Start /B "Calc" "Calc.exe"
   Exit
)

REM Iniciar MS Paint...
Start /B "MSPaint" "MSPaint.exe"
Exit


Si por lo contrario lo que quieres hacer es comprobar que exista al menos 1 archivo DE CADA EXTENSIÓN (es decir, al menos 1 archivo txt + 1 archivo pdf + 1 archivo jpg), entonces puedes hacerlo de la siguiente manera:
Código (dos) [Seleccionar]
@Echo OFF

IF Exist "*.txt" IF Exist "*.pdf" IF Exist "*.jpg" (
   REM Iniciar Calculadora de Windows...
   Start /B "Calc" "Calc.exe"
) Else (
   REM Iniciar MS Paint...
   Start /B "MSPaint" "MSPaint.exe"
)

Exit /B 0



Saludos.




Cita de: **Aincrad** en 11 Noviembre 2017, 02:26 AM
si, lo querias hacer de esta forma:

for %%i in (*.txt *.pdf *.jpg) do (
IF EXIST %%i (goto del) else (goto sla)


déjame decirte que el *.pdf *.jpg no tenían ninguna función hay.

ya que el BATCH al verificar si existe algún txt  "*.txt" va a obviar los  *.pdf *.jpg .

no se si me explico . lo que quiero decir es que si quieres que el batch busque *.pdf *.jpg tienes que hacerlo por paso . como el code que te puse . en cambio si lo haces de la forma for %%i in (*.txt *.pdf *.jpg) que de paso esta mal codeado , el batch va a obviar los *.pdf *.jpg osea no los va a buscar.

Todo eso que has dicho es simplemente falso, pura desinformación que o bien te la has inventado, o no sé de que ignorante informático lo habrás sacado por Internet. Ya te lo dije en el pasado: infórmate y verifica las cosas antes de afirmar cosas sin saber, por favor, por que así no ayudas a los demás, más bien consigues lo opuesto.

El comando FOR acepta como argumento múltiples patrones de búsqueda. separados por los delimitadores soportados (espacio en blanco, coma, o punto y coma)

Un saludo.