Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
.NET Framework
[vb.net] come eseguire un'istruzione DOS e riversarne l'output in un t...
venerdì 31 agosto 2007 - 09.53
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Cyber-Bix
Profilo
| Newbie
5
messaggi | Data Invio:
ven 31 ago 2007 - 09:53
Ciao a tutti,
questo è il mio primo post. Mi chiamo Matteo e sono un programmatore principiante di VB.net
Ecco il mio problema:
sto creando un programma che consenta di monitorare lo stato dei sistemi della mia azienda. Per monitorare le linee di comunicazione con l'esterno mi è stato suggerito di utilizzare l'istruzione DOS "TRACERT". Il fatto è che questa istruzione non è presente in .net come invece lo è invece "Ping".
Ho provato ad eseguirla tramite la classe process.start ma non riesco ad ottenere nessun parametro utile (restituisce solo l'ID del processo). Allora ho cercato di aggiungere il parametro ">C:\Tracert.txt" per cercare di riversare l'output del tracert in un TXT, ma il comando non funziona più. Ecco come l'ho scritta:
System.Diagnostics.Process.Start("c:\windows\system32\tracert.exe", Controllo.Item("IndirizzoIP") + " >C:\Tracert.txt")
Controllo.Item("IndirizzoIP") contiene l'indirizzo IP da tracciare
Potete aiutarmi a creare un'istruzione che lanci il comando tracert e che riversi il risultato in un txt? Cioè in pratica quello che si otterrebbe in DOS facendo "tracert (indirizzo IP) >C:\Tracert.txt.
Grazie in anticipo per l'aiuto.
Ciciu
Profilo
| Senior Member
233
messaggi | Data Invio:
ven 31 ago 2007 - 12:08
Ciao.
Purtroppo non sono molto ferrato in VB, ma Ti posso postare un esempio di PING in c# :
string tArguments = "servername";
ProcessStartInfo ProcInfo = new ProcessStartInfo("ping", tArguments);
ProcInfo.RedirectStandardOutput = true;
ProcInfo.UseShellExecute = false;
Process p = Process.Start(ProcInfo);
TextReader tr = p.StandardOutput;
string tOutput = tr.ReadToEnd();
tr.Close();
Console.WriteLine(tOutput);
Console.ReadKey();
Questo codice esegue il ping di servername e Ti restituisce l'output nella stringa tOutput. E' facilmente adattabile a qualunque esigenza, e non credo avrai problemi a convertirlo in VB.
Ciao - FabioG
Fabio G
mrstock
Profilo
| Newbie
16
messaggi | Data Invio:
ven 31 ago 2007 - 13:14
>Allora ho cercato di aggiungere il parametro ">C:\Tracert.txt"
>per cercare di riversare l'output del tracert in un TXT, ma il
>comando non funziona più. Ecco come l'ho scritta:
>
>System.Diagnostics.Process.Start("c:\windows\system32\tracert.exe", Controllo.Item("IndirizzoIP") + " >C:\Tracert.txt")
System.Diagnostics.Process.Start("c:\windows\system32\tracert.exe " & Controllo.Item("IndirizzoIP") &" > C:\Tracert.txt")
Presta attenzione agli spazi e all' "&" al posto della virgola e del "+". ( sinceramente così su due piedi non ricordo se va usato "&" o "+"
)
Ciao
_______________________________________________________________________
Immaginate il numero dei messaggi di marcovivio ... se scrivesse solo quello che sa.
Cyber-Bix
Profilo
| Newbie
5
messaggi | Data Invio:
ven 31 ago 2007 - 13:42
la stringa che hai inviato non funziona, da "file non trovato". La virgola va usata per separare il comando dagli argomenti infatti se scrivo:
System.Diagnostics.Process.Start("c:\windows\system32\tracert.exe", Controllo.Item("IndirizzoIP"))
esegue l'istruzione correttamente
P.S.: ho creato due Threads per errore, discutiamo in uno solo...
mrstock
Profilo
| Newbie
16
messaggi | Data Invio:
ven 31 ago 2007 - 14:14
>La virgola va usata per separare il comando dagli argomenti ...
Su questo siamo d'accordo, ma passando un'unica stringa completa di argomenti e relativi spazi dovrebbe funzionare ( almeno in C funziona ).
Ad ogni modo appena riesco a mettere le mani su un pc con VB installato faccio due prove e poi ti dico.
Edito ... questo fa al caso tuo :
Dim p As New Process, str As String
p.StartInfo.UseShellExecute = False
p.StartInfo.FileName = "c:\windows\system32\tracert.exe"
p.StartInfo.Arguments = Controllo.Item("IndirizzoIP")
p.StartInfo.RedirectStandardOutput = True
p.Start()
str = p.StandardOutput.ReadToEnd()
p.WaitForExit()
In questo modo avrai il redirect dell'output del comando tracert all'interno della variabile str.
In alternativa puoi creare un file batch che effettua il tracert su file di testo e che accetta come argomento l'ip, in questo modo potresti utilizzare la tua prima versione di codice.
Ciao
_______________________________________________________________________
Immaginate il numero dei messaggi di marcovivio ... se scrivesse solo quello che sa.
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !