MY OBJECTIF: Je veux faire un programme C++ qui pourrait utiliser des commandes DOS. OPTION: je peux créer un fichier batch et y ajouter les commandes dos. mais comment utiliser ce fichier à partir du programme C++ ...?comment pouvons-nous utiliser un fichier batch en C++?
Répondre
Vous souhaitez probablement examiner les appels system
, ShellExecute
et CreateProcess
, pour savoir lequel est approprié dans ce scénario.
system("mybatchfile.bat");
Vous pouvez utiliser l'appel système en C++ du programme pour exécuter toutes les commandes que le programme C++ reçoit de l'utilisateur.
Deux options sont disponibles pour exécuter des fichiers de commandes sous Windows à partir de C/C++. D'abord, vous pouvez utiliser system (ou _wsystem pour les caractères larges).
« La fonction du système passe commande à l'interpréteur de commandes qui exécute la chaîne comme une commande du système d'exploitation. Système fait référence à la COMSPEC et les variables d'environnement PATH qui localisent le fichier de commande interpréteur (le fichier nommé CMD. EXE dans Windows 2000 et versions ultérieures). "
Ou vous pouvez directement utiliser CreateProcess.
Notez que pour les fichiers de traitement par lots:
« Pour exécuter un fichier de commandes, vous devez démarrer l'interpréteur de commandes, mis lpApplicationName à cmd.exe et mettre lpCommandLine aux arguments suivants:/c plus le nom de le fichier batch. "
//example that makes and then calls a batch file
#include <iostream>
#include <fstream>
#include <stdlib.h>
using namespace std;
int main(int argc, char *argv[])
{
ofstream batch;
batch.open("mybatchfile.bat", ios::out);
batch <<"@echo OFF\n";
batch <<":START\n";
batch <<"dir C:\n";
batch <<"myc++file 2 >nul\n";
batch <<"goto :eof\n";
batch.close();
if (argc==2)
{
system("mybatchfiles.bat");
cout <<"Starting Batch File...\n";
}
}
Mettre dos commandes à l'intérieur script batch semble être une bonne idée. Ensuite, vous pouvez bien sûr utiliser la commande system
.
Mais si votre programme C++ nécessite également la sortie standard du script de traitement par lots que vous exécutez, vous devez essayer: _popen
ou _wpopen
.
Pour plus d'informations et l'exemple de code, visitez MSDN.
- 1. Comment fonctionne un fichier batch Microsoft?
- 2. Fichiers batch: comment lire un fichier?
- 3. Comment implémenter quicksort en utilisant un fichier batch?
- 4. Comment exécuter un fichier batch par javascript
- 5. Comment appeler un fichier batch à partir d'un fichier MSI
- 6. Comment obtenir l'équivalent de dirname() dans un fichier batch?
- 7. Comment fermer la fenêtre de commande d'un fichier batch démarré par un autre fichier batch
- 8. Comment exécuter un fichier batch sur un ordinateur distant?
- 9. Fichier batch interactif
- 10. Fichier Autorun et Batch Usb
- 11. Comment transformer le répertoire de travail en un nom de fichier court 8.3 en utilisant batch?
- 12. fichier batch pour/f extension
- 13. comment écrire un fichier batch pour formater Excel?
- 14. Manipuler le temps dans un fichier batch
- 15. Comment puis-je comparer deux fichiers dans un fichier batch?
- 16. Ouverture de plusieurs documents PDF en utilisant le fichier batch
- 17. Comment utiliser COM en C#
- 18. Comment exécuter un fichier batch à partir de Java?
- 19. Comment un fichier batch peut-il localiser l'emplacement?
- 20. Comment utiliser un fichier jaxb.index?
- 21. A l'intérieur d'un fichier batch, comment savoir si un processus est en cours d'exécution?
- 22. comment puis-je changer navigateur par défaut en utilisant C# ou fichier batch
- 23. Comment arrêter un fichier * .JAR en cours d'exécution avec un script batch?
- 24. Comment puis-je créer un fichier batch pour exécuter la même commande cloc en un clic?
- 25. Comment copier un fichier en C#
- 26. Comment shell exécuter un fichier en C#?
- 27. Comment tronquer un fichier en C?
- 28. Comment restaurer un fichier en utilisant C#?
- 29. Comment utiliser un fichier .js?
- 30. Passer le résultat d'un fichier batch à un autre?
Est-ce que ':: CreateProcess (L" cmd.exe "' fonctionne vraiment? J'ai l'erreur 2, ERROR_FILE_NOT_FOUND MAIS, Dans le même appel, si je remplace par "L" c: \\ Windows \\ System32 \\ cmd.exe "", alors il fonctionne miraculeusement ... – Liviu