@TMarmol
1. No es necesario que crees primero un bat y luego un vbs para ejecutar el bat oculto, pues no estás usando Batch, estás en un lenguaje de verdad, aquí puedes usar la Class Process para definir las opciones del proceso y ejecutar el bat oculto. (windowstyle.hidden)
http://msdn.microsoft.com/en-us/library/system.diagnostics.process.aspx
http://msdn.microsoft.com/en-us/library/system.diagnostics.processwindowstyle.aspx
2. Debes tener en cuenta las comillas dobles y los nombres con espacio en los argumentos, como en Batch.
...Quizás eso es lo que te falla, si no muestras el código no lo sé, así que siguiendo el ejemplo de DanyFirex... sería así:
O así, como prefieras:
De todas formas yo sólamente usaría la CMD si no hubiera otra alternativa, no sé exáctamente cuales son las intenciones de tu código Bat pero ...¿Has pensado en hacer ping usando los metodos del .NET?:
Esto es lo más sencillo:
Si quieres algo más customizable aquí tienes una función que acabo de codear:
Saludos
1. No es necesario que crees primero un bat y luego un vbs para ejecutar el bat oculto, pues no estás usando Batch, estás en un lenguaje de verdad, aquí puedes usar la Class Process para definir las opciones del proceso y ejecutar el bat oculto. (windowstyle.hidden)
http://msdn.microsoft.com/en-us/library/system.diagnostics.process.aspx
http://msdn.microsoft.com/en-us/library/system.diagnostics.processwindowstyle.aspx
2. Debes tener en cuenta las comillas dobles y los nombres con espacio en los argumentos, como en Batch.
...Quizás eso es lo que te falla, si no muestras el código no lo sé, así que siguiendo el ejemplo de DanyFirex... sería así:
Código (vbnet) [Seleccionar]
Process.Start("wscript.exe", """" & "C:\ruta con espacios\Script.vbs" & """")
O así, como prefieras:
Código (vbnet) [Seleccionar]
Process.Start("wscript.exe", ControlChars.Quote & "C:\ruta con espacios\Script.vbs" & ControlChars.Quote)
De todas formas yo sólamente usaría la CMD si no hubiera otra alternativa, no sé exáctamente cuales son las intenciones de tu código Bat pero ...¿Has pensado en hacer ping usando los metodos del .NET?:
Esto es lo más sencillo:
Código (vbnet) [Seleccionar]
If My.Computer.Network.Ping("www.google.com") Then
MsgBox("success")
Else
MsgBox("no reply")
End If
Si quieres algo más customizable aquí tienes una función que acabo de codear:
Código (vbnet) [Seleccionar]
#Region " Ping "
' [ Ping Function ]
'
' // By Elektro H@cker
'
' Examples :
' MsgBox(Ping("www.google.com"))
' MsgBox(Ping("www.google.com", 500))
' MsgBox(Ping("www.google.com", 500, New Byte(128) {}, False))
' MsgBox(Ping("www.google.com", 500, System.Text.Encoding.ASCII.GetBytes("Hello"), True))
' For X As Int32 = 1 To 10 : If Not Ping("www.google.com", 1000) Then : MsgBox("Ping try " & X & " failed") : End If : Next : MsgBox("Ping successfully")
Public Function Ping(ByVal Address As String, _
Optional ByVal TimeOut As Int64 = 200, _
Optional ByVal BufferData As Byte() = Nothing, _
Optional ByVal FragmentData As Boolean = False, _
Optional ByVal TimeToLive As Int64 = 128) As Boolean
Dim PingSender As New System.Net.NetworkInformation.Ping()
Dim PingOptions As New System.Net.NetworkInformation.PingOptions()
If FragmentData Then PingOptions.DontFragment = False Else PingOptions.DontFragment = True
If BufferData Is Nothing Then BufferData = New Byte(31) {} ' Sets a BufferSize of 32 Bytes
PingOptions.Ttl = TimeToLive
Dim Reply As System.Net.NetworkInformation.PingReply = PingSender.Send(Address, TimeOut, BufferData, PingOptions)
If Reply.Status = System.Net.NetworkInformation.IPStatus.Success Then
' MsgBox("Address: " & Reply.Address.ToString)
' MsgBox("RoundTrip time: " & Reply.RoundtripTime)
' MsgBox("Time to live: " & Reply.Options.Ttl)
' MsgBox("Buffer size: " & Reply.Buffer.Length)
Return True
Else
Return False
End If
End Function
#End Region
Saludos