2009-07-16 7 views
4

J'essaie de convertir un de mes fichiers texte Unix en un fichier texte DOS. J'utilise la commande suivante:Commande shell VB.NET lançant un fichier non trouvé exception

Shell(string.format("unix2dos {0}", sFileCompletePath)) 

J'ai déjà ajouté la commande unix2dos dans mon chemin d'environnement sur le serveur.

Mais lorsque j'exécute la commande mentionnée ci-dessus, j'obtiens une exception FileNotFound même lorsque le fichier se trouve sur le disque.

Y at-il quelque chose qui me manque?

Répondre

3

Je le recommande de faire de cette façon:

Public Sub ShellandWait(ByVal ProcessPath As String, ByVal Arguments As String) 
     Dim objProcess As System.Diagnostics.Process 
     Try 
      objProcess = New System.Diagnostics.Process() 
      objProcess.StartInfo.Arguments = Arguments 
      objProcess.StartInfo.FileName = ProcessPath 
      objProcess.StartInfo.WindowStyle = ProcessWindowStyle.Maximized 
      objProcess.Start() 
      'Wait until it's finished 
      objProcess.WaitForExit() 
      'Exitcode as String 
      Console.WriteLine(objProcess.ExitCode.ToString()) 
      objProcess.Close() 
     Catch ex As Exception 
      Console.WriteLine("Could not start process " & ProcessPath & " " & ex.Message.ToString) 
     End Try 

    End Sub 

Il est plus compliqué, mais vous donne plus de puissance sur vos processus.

+0

Cela a fonctionné pour moi, merci –

1

Si sFileCompletePath contient des espaces, il pourrait le résoudre en ajoutant des guillemets doubles autour:

Shell(String.Format("unix2dos ""{0}""", sFileCompletePath)) 

Si vous voulez avoir plus de contrôle sur le processus, il pourrait être préférable d'utiliser l'exemple Chris a posté.

+0

J'ai vérifié et ai découvert qu'il n'y a aucun espace dans mon chemin. :( – Shailendra