Question

Ce que je dois faire est d'avoir une application GUI C # 2005 appeler un .bat et plusieurs fichiers VBScript à la demande de l'utilisateur. Ceci est juste une solution palliative jusqu'à la fin des vacances et je peux écrire tout en C #. Je peux obtenir les fichiers VBScript pour exécuter sans problème, mais je suis incapable d'exécuter le fichier .bat. Quand je « clique » dans l'application C # pour exécuter le fichier .bat une fenêtre DOS ouvre et ferme très rapide et le test fichier .bat n'exécute pas - « Windows ne reconnaît pas chauve-souris comme une commande interne ou externe » est l'erreur retourné dans la zone DOS. Si je simplement doubl-cliquez sur le fichier .bat ou d'exécuter manuellement à partir de l'invite de commande, il n'exécute. Je dois aussi le fichier .bat pour exécuter en silence, à moins d'une interaction de l'utilisateur est nécessaire - ce script copie 11k + fichiers vers des dossiers sur une machine en réseau et parfois Windows « oublie » si la destination est un fichier ou un répertoire et demande à l'utilisateur de dire que ce ce qu'il est (ce qui est une toute autre question pas de discussion ici ... Inutile de dire que je suis ennuyé par elle).

Jusqu'à présent, dans ma C source # J'ai ceci:

Process scriptProc = new Process();


        if (File.Exists("c:\\scripts\\batchfile1.bat"))
        {

            scriptProc.StartInfo.FileName = @"cscript";
            scriptProc.StartInfo.Arguments = ("cmd.exe", "/C C:\\scripts\\batchfile1.bat"); // Wacky psuedo code //
            scriptProc.Start();
            scriptProc.WaitForExit(1500000);
            scriptProc.Close();

        }

        if (!File.Exists("c:\\scripts\\batchfile1.bat"))
        {
        }

Je suis conscient du fait que ce code ne fonctionne pas - mais il est essentiellement ce que je veux faire. Ce que je suis à la recherche est quelque chose comme ça pour les fichiers .bat. Je suppose que je dois dire que le système utilise cmd pour exécuter le .bat. Je suis à une perte quant à la façon de le faire. J'ai vérifié ce site qui est pour 2003 C # . Pas beaucoup d'aide pour moi que je suis très vert avec C #.

EDIT: En utilisant le poste de Kevin je tentais encore. script solution même de ce poste, mais modifié pour moi puisque je ne ai pas besoin de rediriger:

 System.Diagnostics.Process proc = new System.Diagnostics.Process();
            proc.StartInfo.FileName = "C:\\scripts\\batchfile1.bat";
            proc.StartInfo.RedirectStandardError = false;
            proc.StartInfo.RedirectStandardOutput = false;
            proc.StartInfo.UseShellExecute = false;
            proc.Start();
            proc.WaitForExit();
Était-ce utile?

La solution

Voici ce que vous cherchez:

service raccroche à WaitForExit après avoir appelé fichier batch

Il est sur une question de savoir pourquoi un service ne peut pas exécuter un fichier, mais il montre tout le code nécessaire pour le faire.

Autres conseils

Pour le problème que vous rencontrez sur le fichier batch demandant à l'utilisateur si la destination est un dossier ou un fichier, si vous connaissez la réponse à l'avance, vous pouvez le faire en tant que tel:

Si la destination est un fichier: écho f | [Chemin du fichier batch]

Si le dossier: écho d | [Chemin du fichier batch]

Il redirigera essentiellement juste après la lettre « écho » à l'entrée du fichier batch.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top