MI PROPÓSITO: quiero hacer un programa de C++ que podría usar dos comandos. OPCIÓN: puedo hacer un archivo por lotes y ponerle los comandos dos. , pero ¿cómo utilizar este archivo desde el programa C++ ...?¿cómo podemos usar un archivo por lotes en C++?
Respuesta
Es probable que desee ver en los system
, ShellExecute
y CreateProcess
llamadas, para averiguar cuál es apropiado en este escenario.
system("mybatchfile.bat");
Puede utilizar la llamada al sistema en el programa en C++ para ejecutar todos los comandos que el programa C++ recibe del usuario.
Hay dos opciones disponibles para ejecutar archivos por lotes en Windows desde C/C++.
Primero, puede usar system (o _wsystem para caracteres anchos).
"La función del sistema pasa comando al intérprete de comandos, que ejecuta la cadena como un comando del sistema operativo. Del sistema se refiere a las variables de entorno PATH que localizan el archivo-intérprete de comandos (el archivo llamado CMD COMSPEC y. EXE en Windows 2000 y posterior). "
O puede usar CreateProcess directamente.
Tenga en cuenta que para los archivos por lotes:
"para ejecutar un archivo por lotes, debe iniciar el intérprete de comandos, establecer lpApplicationName a cmd.exe y establecer lpCommandLine a los siguientes argumentos:/c más el nombre de el archivo por lotes ".
//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";
}
}
Poner dos comandos dentro de script por lotes parece una buena idea. Entonces, por supuesto, puede usar el comando system
.
Pero si su programa C++ también necesita stdout del script por lotes que estaba ejecutando, intente: _popen
o _wpopen
.
Para obtener más información y ejemplos de códigos, visite MSDN.
- 1. Incluir un archivo por lotes en un archivo por lotes
- 2. ejecutar un archivo por lotes desde C#
- 3. ¿Cómo usar psake de un archivo por lotes?
- 4. Codificación de archivo por lotes
- 5. ¿Cuánto demora ejecutar un archivo por lotes?
- 6. ¿cómo podemos descomprimir un archivo en el objetivo c?
- 7. ¿Cómo concatenar cadenas en un archivo por lotes de Windows?
- 8. ¿Cómo protejo las comillas en un archivo por lotes?
- 9. ¿Cómo puedo comparar dos archivos en un archivo por lotes?
- 10. ¿Puedo usar Sass con un script por lotes en Windows
- 11. Prueba del atributo de archivo en el archivo por lotes
- 12. ¿Ejecutar archivo por lotes en vb.net?
- 13. ¿Cómo esperar en un script por lotes?
- 14. ¿Comando inactivo en archivo por lotes?
- 15. Archivo por lotes de subarchivo de llamadas por lotes para pasar n parámetros y regresar sin usar el archivo
- 16. ¿Por qué no podemos usar C-strings como SEL?
- 17. Cómo hacer varias cosas a cada archivo en un directorio con un archivo por lotes
- 18. corriente entrada estándar en un archivo por lotes
- 19. ¿Cómo ejecutar un archivo por lotes desde Java?
- 20. ¿Cómo implemento quicksort usando un archivo por lotes?
- 21. Detectando cómo se ejecutó un archivo por lotes
- 22. Cómo ejecutar un script por lotes (archivo .bat) desde eclipse
- 23. ¿Cómo ejecuto un archivo por lotes desde mi aplicación Java?
- 24. ¿Cómo pasar argumentos extra adicionales a un archivo por lotes?
- 25. Tiempo de impresión en un archivo por lotes (milisegundos)
- 26. Ejecutar archivo por lotes en el fondo
- 27. Control de psftp en un archivo por lotes de Windows
- 28. ¿Cómo obtener un archivo de proceso por lotes para manejar espacios en nombres de archivo?
- 29. ¿Cómo se lee el contenido del archivo en una variable en un archivo por lotes?
- 30. Ejecutando un archivo por lotes en el shell git
Is ':: CreateProcess (L" cmd.exe "' realmente funciona? Tengo el error 2, ERROR_FILE_NOT_FOUND. PERO, en la misma llamada, si lo reemplazo con 'L" c: \\ Windows \\ System32 \\ cmd.exe "', entonces funciona milagrosamente ... – Liviu