elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Archivo .bat sincronizado con barra de estado en visual bacic.net
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Archivo .bat sincronizado con barra de estado en visual bacic.net  (Leído 6,258 veces)
FOXAR

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Archivo .bat sincronizado con barra de estado en visual bacic.net
« en: 2 Marzo 2015, 21:08 pm »

hola espero y me puedan ayudar tengo un archivo .bat que me genera una copia de seguridad de mi base de datos y la ejecuto desde mi aplicación en visual bacic, lo que quiero que que me ayuden a como asociar lo que se demora ese archivo ejecutándose con una barra de estado para que el usuario sepa cuando termino la copia de seguridad. de ante mano gracias 


En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Archivo .bat sincronizado con barra de estado en visual bacic.net
« Respuesta #1 en: 2 Marzo 2015, 21:15 pm »

el comando retorna algún valor en la consola? si no sería inútil colocar un tiempo fijo porque va a cambiar según procesos tengas abiertos, tamaño de la base, etc...


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
FOXAR

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Re: Archivo .bat sincronizado con barra de estado en visual bacic.net
« Respuesta #2 en: 2 Marzo 2015, 21:19 pm »

solo crea la carpeta donde se va a guardar y luego guarda en esa ruta mas no retorna un valor
 
En línea

Eleкtro
Ex-Staff
*
Conectado Conectado

Mensajes: 9.878



Ver Perfil
Re: Archivo .bat sincronizado con barra de estado en visual bacic.net
« Respuesta #3 en: 2 Marzo 2015, 21:20 pm »

Buenas

El planteamiento de la aplicación es incorrecta, ya que estás utilizando una herramienta simple de procesamiento por lotes desde un lenguaje de alto nivel.

1. Puedes hacer TODO lo que puedas hacer en Batch, utilizando puro código .Net.

2. Para implementar una barra de progreso a un proceso externo, en este caso CMD, debes utilizar técnicas de IPC (inter-process comunication) para leer el stream de salida de la CMD y tomar como referencia algún indicador que sirva para estimar el porcentaje de progresión.

El caso es que formulas una duda donde está implicado un código Batch pero ni siquiera muestras el contenido del Batch-Script ¿?,
Si en la consola no se muestra ningún tipo de indicador (1%...100% / 1 de 100) entonces olvídate de poder implementar una barra de progreso en tu aplicación de escritorio, a menos que no te importe utilizar una barra de progreso de estado indeterminado (sin mínimo, ni máximo).

Saludos
« Última modificación: 2 Marzo 2015, 21:24 pm por Eleкtro » En línea



FOXAR

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Re: Archivo .bat sincronizado con barra de estado en visual bacic.net
« Respuesta #4 en: 2 Marzo 2015, 21:26 pm »

haaa este es .bat
Código
  1. @echo off
  2. cls
  3.  
  4. IF NOT EXIST "D:\ruta\backup\%date:~6,4%\%date:~3,2%\%date:~0,2%%date:~3,2%%date:~6,4%" MD "D:\ruta\backup\%date:~6,4%\%date:~3,2%\%date:~0,2%%date:~3,2%%date:~6,4%"
  5.  
  6. cd "D:\ruta\backup\%date:~6,4%\%date:~3,2%\%date:~0,2%%date:~3,2%%date:~6,4%"
  7.  
  8.  
  9. SET PGPASSWORD=contraseña
  10. "C:\Archivos de programa\PostgreSQL\9.3\bin\"pg_dump.exe --host localhost --port 5432 --username siscolsi --format custom --blobs --verbose --file "D:\ruta\backup\%date:~6,4%\%date:~3,2%\%date:~0,2%%date:~3,2%%date:~6,4%\basede datos-%date:~0,2%%date:~3,2%%date:~6,4%_%Time:~0,2%HH%Time:~3,2%MM.backup" "nombre del baku"



[MOD]:

espero que me ayuden para poder sincronizarlos
1. Utiliza el botón de insertar código para insertar bloques de código.
2. Publica las preguntas sobre .Net en la sección dedicada a la programación .Net
Lee las normas del foro.
« Última modificación: 2 Marzo 2015, 21:53 pm por FOXAR » En línea

Eleкtro
Ex-Staff
*
Conectado Conectado

Mensajes: 9.878



Ver Perfil
Re: Archivo .bat sincronizado con barra de estado en visual bacic.net
« Respuesta #5 en: 2 Marzo 2015, 22:37 pm »

¿y donde está el código de VB.Net?, aquí no hacemos tareas.

Además desconocemos la salida de dicho proceso "pgdump", y se te han dado indicaciones de lo que debes hacer.

De todas formas te muestro un extenso ejemplo sobre cómo traducir ese batch-script a VB.Net, y cómo leer la salida normal/error de dicho proceso, de forma asíncrona:

Código
  1. Imports System.Globalization
  2. Imports System.IO
  3. Imports System.Text
  4.  
  5. Public Class TestForm
  6.  
  7.    ReadOnly backupDirDateFormat As String =
  8.        Date.Today.ToString("yyyy\\MM\\ddMMyyyy", CultureInfo.InvariantCulture)
  9.  
  10.    ReadOnly dbFilenameDateFormat As String =
  11.        Date.Now.ToString("ddMMyyyy_HH\H\Hmm\M\M", CultureInfo.InvariantCulture)
  12.  
  13.    ReadOnly sourceDir As String = "D:\ruta\backup"
  14.    ReadOnly backupDir As String = Path.Combine(Me.sourceDir, Me.backupDirDateFormat)
  15.    ReadOnly dbSrcFilepath As String = Path.Combine(Me.backupDir, String.Format("basede datos-{0}.backup", Me.dbFilenameDateFormat))
  16.    ReadOnly dbDstFilepath As String = Path.Combine(Application.StartupPath, "Nombre del backup")
  17.  
  18.    ReadOnly pgFilepath As String = "C:\Archivos de programa\PostgreSQL\9.3\bin\pg_dump.exe"
  19.    ReadOnly pgPassword As String = String.Empty
  20.    ReadOnly pgArgsFormat As String =
  21.        <a>--host "localhost" --port "5432" --username "siscolsi" --format "custom" --blobs --verbose --file "{0}" "{1}"</a>.Value
  22.  
  23.    Private WithEvents pgProcess As New Process With
  24.        {
  25.            .EnableRaisingEvents = True,
  26.            .StartInfo = New ProcessStartInfo With
  27.                         {
  28.                             .FileName = Me.pgFilepath,
  29.                             .Arguments = String.Format(Me.pgArgsFormat, Me.dbSrcFilepath, Me.dbDstFilepath),
  30.                             .CreateNoWindow = False,
  31.                             .RedirectStandardError = True,
  32.                             .RedirectStandardOutput = True,
  33.                             .StandardErrorEncoding = Encoding.Default,
  34.                             .StandardOutputEncoding = Encoding.Default,
  35.                             .UseShellExecute = False,
  36.                             .WindowStyle = ProcessWindowStyle.Hidden,
  37.                             .WorkingDirectory = Application.StartupPath
  38.                         }
  39.        }
  40.  
  41.    Private Sub TestForm_Load() _
  42.    Handles MyBase.Load
  43.  
  44.        If Not Directory.Exists(Me.sourceDir) Then
  45.            Try
  46.                Directory.CreateDirectory(Me.sourceDir)
  47.  
  48.            Catch ex As Exception
  49.                Throw
  50.  
  51.            End Try
  52.        End If
  53.  
  54.        With Me.pgProcess
  55.            .Start()
  56.            .BeginOutputReadLine()
  57.            .BeginErrorReadLine()
  58.            ' .WaitForExit(milliseconds:=0)
  59.            .WaitForExit()
  60.        End With
  61.  
  62.    End Sub
  63.  
  64.    Private Sub PGprocess_OutputDataReceived(ByVal sender As Object, ByVal e As DataReceivedEventArgs) _
  65.    Handles pgProcess.OutputDataReceived
  66.  
  67.        If Not String.IsNullOrEmpty(e.Data) Then
  68.            Debug.WriteLine(String.Format("out: {0}", e.Data))
  69.        End If
  70.  
  71.    End Sub
  72.  
  73.    Private Sub PGprocess_ErrorDataReceived(ByVal sender As Object, ByVal e As DataReceivedEventArgs) _
  74.    Handles pgProcess.ErrorDataReceived
  75.  
  76.        If Not String.IsNullOrEmpty(e.Data) Then
  77.            Debug.WriteLine(String.Format("err: {0}", e.Data))
  78.        End If
  79.  
  80.    End Sub
  81.  
  82.    Private Sub PGprocess_Exited(ByVal sender As Object, ByVal e As EventArgs) _
  83.    Handles pgProcess.Exited
  84.  
  85.        Debug.Print(String.Format("Process exited at {0}", Date.Now.ToShortTimeString))
  86.  
  87.    End Sub
  88.  
  89. End Class

Lee un poco sobre la class Process, y técnicas de IPC en .Net.

Saludos.
« Última modificación: 2 Marzo 2015, 22:43 pm por Eleкtro » En línea



FOXAR

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Re: Archivo .bat sincronizado con barra de estado en visual bacic.net
« Respuesta #6 en: 2 Marzo 2015, 22:50 pm »

guaw no tenia ni idea que eso se podía hacer de esta manera.

la verdad es que el código de vb.net que yo tengo genera la creación de ese archivo .bat recibiendo como parámetros la ruta el password el usuario el host y el nombre. y luego en otro botón ejecuto ese archivo .bat
espero que me disculpes soy nuevo en este foro y agradezco mucho su ayuda

muchas gracias  ;-)
« Última modificación: 2 Marzo 2015, 22:56 pm por FOXAR » En línea

Eleкtro
Ex-Staff
*
Conectado Conectado

Mensajes: 9.878



Ver Perfil
Re: Archivo .bat sincronizado con barra de estado en visual bacic.net
« Respuesta #7 en: 2 Marzo 2015, 22:57 pm »

Sigue este consejo: Olvida completamente Batch, y también el uso de aplicaciones externas commandline en la medida de lo posible, jeje.

Con el ejemplo que te he mostrado, primero deberás comprobar si el formato que le dí a las cadenas es la correcta para tí, y podrás leer la salida del proceso 'pgdump.exe', ya a apartir de ahí implementar una ProgressBar es cosa tuya, por que para llevarlo a cabo se requiere leer la salida estándar del proceso (en el event-handler 'PGprocess_OutputDataReceived') y realizar las estimaciones necesarias teniendo en cuenta que dicho programa muestre algún indicador de progreso, claro está, ya sea un porcentaje o la cantidad de archivos copiados y restantes.

Si el proceso no muestra ese tipo de información entonces solo puedes crear una barra de progreso con progreso indeterminado, y esperar a que el la instancia del proceso envie el evento de terminación del proceso (event-handler 'PGprocess_Exited')

Código
  1.        With Me.ProgressBar1
  2.            .Style = ProgressBarStyle.Marquee
  3.            .MarqueeAnimationSpeed = 50
  4.        End With

EDITO: Se me ocurre una cosa viable, si conoces la cantidad de archivos a copiar y su ubicación, entonces podrías calcular el porcentaje de la barra de progreso leyendo los bytes totales de los archivos de origen, y los bytes que se han copiado en el directorio destino.
Puedes utilizar la class FileInfo para leer el tamaño de bytes de un archivo.

Saludos
« Última modificación: 2 Marzo 2015, 23:10 pm por Eleкtro » En línea



FOXAR

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Re: Archivo .bat sincronizado con barra de estado en visual bacic.net
« Respuesta #8 en: 2 Marzo 2015, 23:08 pm »

muchas gracias por tu ayuda  :xD
el código que me pasaste no lo entiendo muy bn pero ya estoy tratando de comprenderlo  :xD me has ayudado mucho gracias por hacer que entienda la programación de una mejor manera  ;-)
En línea

FOXAR

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Re: Archivo .bat sincronizado con barra de estado en visual bacic.net
« Respuesta #9 en: 2 Marzo 2015, 23:15 pm »

es una sola base de datos que se aloja en el servidor una ves se ejecuta el .bat genera un baku de posgresql con todas sus tablas información en las tablas funciones disparadores tigger etc. eso demora dependiendo que tan cargada este la base de datos
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Cómo eliminar estado en la barra de estado? « 1 2 »
Java
WHK 10 6,333 Último mensaje 22 Junio 2012, 01:32 am
por Nortis
Barra de progreso en subida de archivo C#
.NET (C#, VB.NET, ASP)
MeTaD 4 5,139 Último mensaje 19 Febrero 2013, 21:41 pm
por spiritdead
La NSA tenía un archivo con datos de 122 jefes de Estado
Noticias
wolfbcn 2 1,782 Último mensaje 29 Marzo 2014, 23:05 pm
por Gh057
MOVIDO: Archivo .bat sincronizado con barra de estado en visual bacic.net
Scripting
Eleкtro 0 1,766 Último mensaje 2 Marzo 2015, 21:13 pm
por Eleкtro
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines