Creando Batch desde Vb.Net!!
Publicado por Eukeny (7 intervenciones) el 17/11/2009 21:26:54
Hola, he creado un batch desde Visual Basic.Net, para respaldar unos directorios, sin embargo vengo aqui a solicitar su ayuda porque no hace lo que necesito. Puse este tema aqui porque manejo batch, aunque realmente estoy creando un fichero bat desde visual basic.net 2005 y no supe donde postearlo...
Trate de hacerlo lo mas sencillo posible, espero no sea muy enredado..
El Batch se crea sin problemas
Me crea los directorios destino,
pero no copia los archivos y carpetas fuente,
puede tener algun error??Ojala y me puedan ayudar?..
*************** anexo el codigo a continuacion..
Option Explicit On
Imports System.IO
Public Class Form1
' INDICO C:\ POR DEFAULT
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
TextBox1.Text = "C:\"
TextBox1.SelectAll()
TextBox1.Focus()
End Sub
'UTILIZO UN FOLDER BROWSE DIALOG PARA ESTABLECER UNA RUTA Y LA AGREGO A UN
' TEXTBOX
Private Sub btnExaminar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExaminar.Click
Dim folder As New FolderBrowserDialog
If folder.ShowDialog = Windows.Forms.DialogResult.OK Then
TextBox1.Text = folder.SelectedPath
End If
End Sub
' AQUI ESTOY CREANDO EL FICHERO BATCH DE NOMBRE Prueba.bat EN LA RUTA
' QUE SE ESTABLECE EN TEXTBOX1
' TUVE QUE UTILIZAR LOS CODIGOS PARA TAB =>chr(9) PARA ALINEAR EL TEXTO DEL BAT
' chr(34) PARA AGREGARLE LAS COMILLAS A LAS RUTAS, YA QUE VB.NET NO PERMITE
' INTRODUCIR COMILLAS DENTRO DE COMILLAS
' COMO POR EJEMPLO:
' EN Textbox1.text = " "Hola" ".. ESTO EN VB.NET ES INCORRECTO
' LO CORRECTO ES CONCATENAR: Textbox1.text = chr(34) + "Hola" + chr(34)
Private Sub btnCrear_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCrear.Click
Dim oSW As New StreamWriter(TextBox1.Text & "Prueba.bat")
Dim Linea As String = "mdow @ /HID" & vbNewLine & _
"@ECHO OFF" & vbNewLine & _
"@ECHO *** RESPALDANDO ***" & vbNewLine & vbNewLine & _
"SET FOLDER=%date:~0,2%-%date:~3,2%-%date:~6,4%" & vbNewLine & _
"SET BACKUPCMD = XCOPY / S / C / D / E / H / I / R / Y " & vbNewLine & _
"SET i=0" & vbNewLine & _
": suma" & vbNewLine & vbNewLine & _
"set /a i=i+1" & vbNewLine & vbNewLine & _
"IF EXIST " + Chr(34) + "C:\RespSist_" + Chr(34) + "%FOLDER%-%i%. goto suma" & vbNewLine & vbNewLine & _
Chr(9) + "MKDIR " + Chr(34) + "C:\RespSist_" + Chr(34) + "%FOLDER%-%i%" & vbNewLine & _
Chr(9) + "MKDIR " + Chr(34) + "C:\RespSist_%FOLDER%-%i%\Mis Documentos" + Chr(34) & vbNewLine & _
Chr(9) + "MKDIR " + Chr(34) + "C:\RespSist_%FOLDER%-%i%\Escritorio" + Chr(34) & vbNewLine & _
Chr(9) + "%BACKUPCMD% " + Chr(34) + "C:\Documents and settings\kenny\Mis Documentos" + Chr(34) + ". " + Chr(34) + "C:\RespSist_%FOLDER%-%i%\Mis Documentos" + Chr(34) & vbNewLine & _
Chr(9) + "%BACKUPCMD% " + Chr(34) + "C:\Documents and settings\kenny\Escritorio" + Chr(34) + ". " + Chr(34) + "C:\RespSist_%FOLDER%-%i%\Escritorio" + Chr(34) & vbNewLine & vbNewLine & _
"FOR /F " + Chr(34) + "skip=2" + Chr(34) + " %%i IN ('DIR C:\Res* /O-D /B') DO RD /S /Q C:\%%i" & vbNewLine & vbNewLine & _
": salir"
oSW.WriteLine(Linea)
oSW.Flush()
End Sub
' ABRO EL EXPLORADOR DE WINDOWS PARA CORROBORAR QUE SE HAYA CREADO EL
' FICHERO
Private Sub btnIrA_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnIrA.Click
Shell("explorer.exe " & TextBox1.Text, vbNormalFocus)
End Sub
End Class
Trate de hacerlo lo mas sencillo posible, espero no sea muy enredado..
El Batch se crea sin problemas
Me crea los directorios destino,
pero no copia los archivos y carpetas fuente,
puede tener algun error??Ojala y me puedan ayudar?..
*************** anexo el codigo a continuacion..
Option Explicit On
Imports System.IO
Public Class Form1
' INDICO C:\ POR DEFAULT
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
TextBox1.Text = "C:\"
TextBox1.SelectAll()
TextBox1.Focus()
End Sub
'UTILIZO UN FOLDER BROWSE DIALOG PARA ESTABLECER UNA RUTA Y LA AGREGO A UN
' TEXTBOX
Private Sub btnExaminar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExaminar.Click
Dim folder As New FolderBrowserDialog
If folder.ShowDialog = Windows.Forms.DialogResult.OK Then
TextBox1.Text = folder.SelectedPath
End If
End Sub
' AQUI ESTOY CREANDO EL FICHERO BATCH DE NOMBRE Prueba.bat EN LA RUTA
' QUE SE ESTABLECE EN TEXTBOX1
' TUVE QUE UTILIZAR LOS CODIGOS PARA TAB =>chr(9) PARA ALINEAR EL TEXTO DEL BAT
' chr(34) PARA AGREGARLE LAS COMILLAS A LAS RUTAS, YA QUE VB.NET NO PERMITE
' INTRODUCIR COMILLAS DENTRO DE COMILLAS
' COMO POR EJEMPLO:
' EN Textbox1.text = " "Hola" ".. ESTO EN VB.NET ES INCORRECTO
' LO CORRECTO ES CONCATENAR: Textbox1.text = chr(34) + "Hola" + chr(34)
Private Sub btnCrear_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCrear.Click
Dim oSW As New StreamWriter(TextBox1.Text & "Prueba.bat")
Dim Linea As String = "mdow @ /HID" & vbNewLine & _
"@ECHO OFF" & vbNewLine & _
"@ECHO *** RESPALDANDO ***" & vbNewLine & vbNewLine & _
"SET FOLDER=%date:~0,2%-%date:~3,2%-%date:~6,4%" & vbNewLine & _
"SET BACKUPCMD = XCOPY / S / C / D / E / H / I / R / Y " & vbNewLine & _
"SET i=0" & vbNewLine & _
": suma" & vbNewLine & vbNewLine & _
"set /a i=i+1" & vbNewLine & vbNewLine & _
"IF EXIST " + Chr(34) + "C:\RespSist_" + Chr(34) + "%FOLDER%-%i%. goto suma" & vbNewLine & vbNewLine & _
Chr(9) + "MKDIR " + Chr(34) + "C:\RespSist_" + Chr(34) + "%FOLDER%-%i%" & vbNewLine & _
Chr(9) + "MKDIR " + Chr(34) + "C:\RespSist_%FOLDER%-%i%\Mis Documentos" + Chr(34) & vbNewLine & _
Chr(9) + "MKDIR " + Chr(34) + "C:\RespSist_%FOLDER%-%i%\Escritorio" + Chr(34) & vbNewLine & _
Chr(9) + "%BACKUPCMD% " + Chr(34) + "C:\Documents and settings\kenny\Mis Documentos" + Chr(34) + ". " + Chr(34) + "C:\RespSist_%FOLDER%-%i%\Mis Documentos" + Chr(34) & vbNewLine & _
Chr(9) + "%BACKUPCMD% " + Chr(34) + "C:\Documents and settings\kenny\Escritorio" + Chr(34) + ". " + Chr(34) + "C:\RespSist_%FOLDER%-%i%\Escritorio" + Chr(34) & vbNewLine & vbNewLine & _
"FOR /F " + Chr(34) + "skip=2" + Chr(34) + " %%i IN ('DIR C:\Res* /O-D /B') DO RD /S /Q C:\%%i" & vbNewLine & vbNewLine & _
": salir"
oSW.WriteLine(Linea)
oSW.Flush()
End Sub
' ABRO EL EXPLORADOR DE WINDOWS PARA CORROBORAR QUE SE HAYA CREADO EL
' FICHERO
Private Sub btnIrA_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnIrA.Click
Shell("explorer.exe " & TextBox1.Text, vbNormalFocus)
End Sub
End Class
Valora esta pregunta
0