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

#2811
Programación General / Re: Unir archivos csv
22 Febrero 2017, 05:05 AM
Hola.

Como ya te han mencionado, puedes usar el comando Copy. Recuerda que puedes usar los asteriscos para incluir todos los archivos del directorio de trabajo actual:

Código (dos) [Seleccionar]
Copy /B "*.csv" "Destination File.csv"




Si deseas añadir un salto de linea entre cada unión, entonces primero debes comprobar si el archivo termina con un salto de linea/linea en blanco o no, y eso no es posible mediante batch ya que el comando For por defecto descarta las lineas en blanco en la iteración de lineas de un archivo de texto plano. Así pues, esto sería una manera de hacerlo usando VisualBasic Script:

Script.vbs
Código (vb) [Seleccionar]
Option Explicit

Dim dir, file, fso, shell, reader, writer, _
    outFilepath, curLine, allLines

Set fso     = WScript.CreateObject("Scripting.FileSystemObject")
Set shell   = WScript.CreateObject("WScript.Shell")
Set dir     = fso.GetFolder(shell.CurrentDirectory)
outFilepath = dir.Path & "\" & "New.csv"
Set writer  = fso.CreateTextFile(outFilepath, True)
Set reader  = Nothing

For Each file In dir.Files
   
    If (LCase(fso.GetExtensionName(file.name)) = "csv") And (file.Path <> outFilepath) Then

        Set reader = file.OpenAsTextStream(1, False)
        Do Until reader.AtEndOfStream
            curLine = reader.ReadLine()
            If Not reader.AtEndOfStream Then
                allLines = (allLines & curLine & vbCrLf)
            Else
                allLines = (allLines & curLine)
            End If
        Loop
        reader.Close()

        If (curLine <> "") Then
            writer.write(allLines & vbCrLf)
        Else
            writer.write(allLines)
        End If

    End If

    allLines = ""
Next
writer.Close()

WScript.Quit(0)


¡Saludos!.
#2812
Cita de: sapales en 19 Febrero 2017, 19:47 PMHe encontrado http://gong-shell.sourceforge.net/ que es una .dll Open Source que hace lo que necesito.

Hola. Es preferible que uses el control ExplorerBrowserControl de la librería opcional Windows-API-Code-Pack de Microsoft. Puedes encontrar el código fuente aquí:



¡Saludos!
#2813
Scripting / Re: Problema Programa
22 Febrero 2017, 05:04 AM
Hola.

¿Debemos adivinar en que lenguaje de programación estás trabajando?. Resulta practicamente imposible decirte por ejemplo como comprobar diferentes capitalizaciones de las cadenas de texto o respuestas, sin conocer previamente el lenguaje en cuestión ...junto a los métodos de evaluación de strings del que éste dispone.

De todas formas, aquí no se hacen tareas, pero si lo que estás pidiendo es orientación entonces tu pregunta es bien recibida por supuesto! :).

¡Saludos!.
#2814
Scripting / Re: python
22 Febrero 2017, 05:03 AM
Cita de: preguntas12 en 17 Febrero 2017, 14:40 PM
que son los ide

Pero... alma de cántaro, ¿esto no es algo que puedas buscar por ti mismo en Google para conocer la respuesta?.


Saludos!.
#2815
Cita de: robebugaty en 18 Febrero 2017, 18:40 PMQuería saber si el rendimiento de un juego corresponde directamente con el hardware del equipo utilizado o depende más bien del propio rendimiento que ofrece dicho software, dependiendo de los errores de programación del mismo, entre otros factores, así pues, en cómo afecta el mismo rendimiento cuando juegas con mods.

Hablo de juegos como The Elder Scrolls V:  Skyrim Special Edition, es decir, la edición que tiene soporte de 64Bits.

Hola.

Los procesos de 64 Bits de por si se componen de optimizaciones específicas para aprovechar las ventajas de esta arquitectura, lo que significa que en un principio teoríco debería irte más fluido que el mismo proceso en su equivalente de 32 Bits. En muchas ocasiones no se aprecian las mejoras, es el caso de por ejemplo el navegador Firefox, motivo por el cual decidieron estar casi una década sin actualizarse a los 64 Bits, por que manifestaban que "la mejora era ínfima"; pero oye, eso de pasarse a los 64 Bits supone una mejora, por ínfima que sea.

El impacto de rendimiento que repercute sobre tu PC al iniciar el proceso de un videojuego, logicamente depende de ambas partes, tanto de lo sofisticado que sea el motor gráfico de desarrollo junto a los algoritmos del juego que manejan y limpian las texturas y el resto de los recursos, como del propio rendimiento de tu hardware. No creo que haga falta añadir más explicaciones a este punto, ya que cada videojuego es un mundo, igual que lo es cada componente de hardware y cada motor gráfico.

¡Un saludo!.
#2816
Llego tarde. Te habría respondido lo mismo que el compañero @IKillNukes cuando compartí este código de ejemplo que publiqué hace un tiempo:


Cita de: ElektroHace ya bastante tiempo Google realizó unos cambios, y desde entonces para poder enviar correos electrónicos mediante SMTP primero debes habilitar una opción en la configuración de tu cuenta de GMail para permitir este tipo de aplicaciones. aquí:


Saludos

¡Saludos!.
#2817
Hola.

Si te fijas, en el código que mostré, en esta linea:
Código (dos) [Seleccionar]
IF NOT EXIST "%proy%\NUL"

La dejé así, tal y como estaba escrita en el primer código que tu mostraste, por que eso me dió a entender que tu querías buscar un directorio llamado "Nul" (a pesar de que sea un nombre ilegal en Windows) dentro del directorio que especificases en la variable %proy%. Es decir, que si en la variable %proy% especificas "Manolo", el código debía buscar un directorio llamado "Nul" dentro del directorio "Manolo". Con el último código que has mostrado parece que aquello que escribiste de "%proy%\Nul" era simplemente por que estuviste probando cosas aleatorias o no se...

En fin, para corregirlo solo debes modificar esa linea para dejar el código que te mostré así:

Código (dos,8) [Seleccionar]
:menu1
set "proy="
cls
SET /P "proy=Introduce el nombre del directorio: "
Echo:"%proy%"
if "%proy%" EQU "" (goto :menu1)
if "%proy%" EQU " " (goto :menu1)
IF NOT EXIST "%proy%\" (
   echo OK, no existe
) Else (
   echo NO, ya existe
)
ping -n 5 0.0.0.0 > nul
goto :menu1


¡Saludos!.
#2818
Cita de: eXtm en 16 Febrero 2017, 10:28 AMpodrias explicarme que significa"  & (CHCP 1252)1>NUL  "

Hola.

El propósito de {n}>NUL sirve para redireccionar un stream especifico de un comando o proceso, donde {n} en este caso es "1", el buffer de salida (1 = STDOUT) y se redirecciona hacia "Nulo", es decir, nada, u oculto. Dicho de otra forma, 1>NUL sirve para ocultar el mensaje del comando. En otros casos podriamos usar 2>NUL para ocultar el mensaje de error (2 = STDERR), o 1>NUL 2>&1 para ocultar ambos, etc.




Sobre el comando CHPC, bueno...

Cuando desconozcas el propósito de un comando, siempre puedes ver la ayuda del comando en la consola escribiendo "/?" al final del nombre de dicho comando:

CHCP /?

Esto nos mostrará lo siguiente:
Cita de: CMDMuestra o establece el número de la página de códigos activa.

CHCP [nnn]
 nnn   Especifica una página de códigos.

Escriba CHCP sin parámetro para mostrar el número de la página de códigos activa.

Y esto viene a decirnos, que el comando CHCP sirve para modificar el modo en el que la consola representa los caracteres en pantalla usando un código de páginas de Windows específico, o dicho de otra forma, un set de caracteres específico, en este caso CHCP 1252 corresponde a Windows Latin 1 (ANSI):






Te preguntarás por que he usado el comando CHCP si parece que en tu script no haga falta usarlo, y en principio es verdad, simplemente lo utilizo en todos mis scripts para conservar las buenas costumbres, puesto que la consola o CMD por defecto utiliza el código de página 850 y esto no representa correctamente los caracteres del Castellano.

Te mostraré un ejemplo breve para que comprendas la diferencia:

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

(CHCP 1252)1>NUL
Echo áéíóú

(CHCP 850)1>NUL
Echo áéíóú

Pause&Exit


Resultado de ejecución:
Citaráéíóú
ßÚݾ·
Presione una tecla para continuar . . .
#2819
Cita de: MDd2 en 20 Febrero 2017, 22:41 PMNo se si es posible.

No, no es posible con Batch. Es un lenguaje bastante primitivo que en la mayoría de escenarios ni tan siquiera se le puede considerar un lenguaje de programación, es más bien una herramienta limitada (muy limitada) para principiantes. Lo cierto es que más bien es un lenguaje enfocado a la automatización de tareas básicas de un usuaro normal y corriente, así que no le pidas mucho más al pobre Batch...

Como alternativa puedes construir una intefáz gráfica usando el lenguaje WinBatch, que se caracteriza por usar una mezcla de sintaxis entre Batch y VisualBasic Script.

Pero en mi opinión lo mejor es que si realmente necesitas hacer cosas extravagantes como esta entonces te vayas olvidando de Batch y optes por un lenguaje de alto nivel que te permita llevar a cabo este tipo de tarea de una forma encapsulada y abstracta, como por ejemplo C# o VB.NET. Eso sería una opción genial, ya que con los miembros del espacio de nombres System.Console puedes determinar la posición de la celda actual que se encuentra activa en el buffer de la consola, y con eso podrías intentar empezar a evaluar si se hizo click sobre una celda específica despues de haber obtenido la posición actual del mouse relativa a la ventana de la consola. En un principio suena tedioso, y debe serlo, ya que tienes que averiguar la longitud del texto y la posición actual dentro del buffer de salida de la consola, y también si ese texto está visible o no en el buffer, etc, pero con eso que te he dicho consigues obtener practicamente toda la información necesaría.

¡Un saludo!.




EDITO:

Cita de: Ikillnukes en 20 Febrero 2017, 22:58 PMEn todo caso si podrías hacerlo con VBScript bajo wscript que es la versión gráfica de este.

No, ojo con las cosas que das por asumido. WScript.exe solamente es un intérprete para evaluar código de VisualBasic Script (o VBS) y JScript (o javascript for Windows) entre otros varios (vease la lista de motores de lenguajes soportados por Windows Script Host en la Wikipedia) que corran en modo gráfico (o GUI). Y CScript.exe es la versión del intérprete en modo consola (o CLI), pero esta diferencia entre que exista una versión en modo GUI y otra en modo CLI no significa que con VBS por si solo puedas construir una GUI, pues VBS no provee absolutamente ningún control, ni CheckBoxes ni ListBoxes, ni nada de nada... solamente un "InputBox" y la capacidad para mostrar MessageBoxes.

Dicho esto, cabe mencionar que en VBS se puede instanciar el objeto COM InternetExplorer.Application para desarrollar una especie de GUI, pero esto es un procedimiento que genera un código resultante bastante engorroso y es una pérdida de tiempo por que basicamente lo que se está cosntruyendo es una aplicación HTML (puesto que se están consumiendo los controles que provee IE), y para ello hay una manera más sofisticada y más llevadera de construir ese tipo de GUI, lo cual daría como resultado un archivo con extensión .hta que puedes correr con el intérprete mshta.exe.




Ejemplo de una GUI HTA:

Script.hta
Código (html4strict) [Seleccionar]
<head>
<title>HTA Test</title>
<HTA:APPLICATION
    APPLICATIONNAME="HTA Test"
    SCROLL="yes"
    SINGLEINSTANCE="yes"
    WINDOWSTATE="maximize"
>
</head>

<script language="VBScript">
   Sub TestSub
       Msgbox "Testing 1-2-3."
   End Sub
</script>

<body>
<input type="button" value="Run Script" name="run_button"  onClick="TestSub"><p>

</body>

Referencia al autor: https://technet.microsoft.com/en-us/library/ee692768.aspx

Ejemplo de una GUI VBS:

Script.vbs
Código (vb) [Seleccionar]
Option Explicit
Dim aOpt(4)
aOpt(0) = "Option 1"
aOpt(1) = "Option 2"
aOpt(2) = "Option 3"
aOpt(3) = "Option 4"
aOpt(4) = "Option 5"
wsh.echo "You selected:", SelectBox("Select an option", aOpt)

Function SelectBox(sTitle, aOptions)
Dim oIE, s, item
 set oIE = CreateObject("InternetExplorer.Application")
 With oIE
   .ToolBar   = False : .RegisterAsDropTarget = False
   .StatusBar = False : .Navigate("about:blank")
   While .Busy : WScript.Sleep 100 : Wend
   With .document
     With .parentWindow
       if Instr(.navigator.appVersion, "MSIE 6") > 0 Then
         oIE.FullScreen = True
       End if
       oIE.width = 400 : oIE.height = 150
       oIE.left = .screen.width \ 2 - 200
       oIE.top  = .screen.height\ 2 - 75
     End With ' ParentWindow
     s = "<html><head><title>" & sTitle & " " & String(80, ".") _
       & "</title></head><script language=vbs>bWait=true</script>" _
       & "<body bgColor=Silver><center><b>" & sTitle & "<b><p>" _
       & "<select id=entries size=1 style='width:250px'>" _
       & "  <option selected>" & sTitle & "</option>"
     For each item in aOptions
       s = s & "  <option>" & item & "</option>"
     Next
     s = s & "  </select><p>" _
       & "<button id=but0 onclick='bWait=false'>OK</button>" _
       & "</center></body></html>"
     .WriteLn(s)
     With .body
       .scroll="no"
       .style.borderStyle = "outset"
       .style.borderWidth = "3px"
     End With ' Body
     .all.entries.focus
     oIE.Visible = True
     On Error Resume Next
     While .ParentWindow.bWait
       WScript.Sleep 100
       if oIE.Visible Then SelectBox = "Aborted"
       if Err Then Exit Function
     Wend ' Wait
     On Error Goto 0
     With .ParentWindow.entries
       SelectBox = .options(.selectedIndex).text
     End With
   End With ' document
   .Visible = False
 End With   ' IE
End Function

Referencia al autor: https://social.technet.microsoft.com/Forums/scriptcenter/en-US/63802c32-fec3-4d83-8036-b37f46d3fe75/gui-for-vbs?forum=ITCG

¡Saludos!
#2820
Scripting / Re: Script para dar clicks
22 Febrero 2017, 05:01 AM
Hola.

No existe ningún comando built-in ni comando externo para simular eventos del ratón, ni posicionar el puntero del mouse en unas coordenadas específicas ni hacer click ni nada que se le parezca.

Usa otro lenguaje capacitado para llamar las funciones de Windows SetCursorPos y mouse_event, o en su defecto la manera idonea haciendo uso de las estructuras de RAW_INPUT y la función SendInput. Esto requeriría que aprendieses un lenguaje de programación distinto a Batch y algunas bases de la programación y del manejo de la API de Windows.

Ciertos lenguajes de programación de alto nivel (es decir abstractos) te faclitan al máximo posible este tipo de tareas, como por AutoHotkey, o C# o VB.NET, en el que además de poder optar por implementar/P.Invokear los miembros de la API de Windows RAW_INPUT, también te permite simplificarlo llamando al siguiente método:

Código (vbnet) [Seleccionar]
Microsoft.VisualStudio.TestTools.UITesting.Click()

( Aunque la serie de ensamblados Microsoft.VisualStudio.TestTools.* cumplen el propósito de servir para desarrollar tests CodedUI para evaluar el comportamiento de las aplicaciones, pero bueno, lo cierto es que te sirve igual como alternativa. )




Si realmente deseas llevar a cabo esta tarea desde Batch, entonces si o sí necesitas recurrir a una herramienta externa que haya sido diseñada para tal propósito o que pueda hacer eso que pides, vaya, como por ejemplo NirCMD de NirSoft:


Ejemplo:
Código (dos) [Seleccionar]
NirCMD.exe setcursor X Y, 0, True
NirCMD.exe sendmouse left click


Saludos!