2009-09-25 13 views

Respuesta

6

Es probable que desee ver en los system, ShellExecute y CreateProcess llamadas, para averiguar cuál es apropiado en este escenario.

0

Puede utilizar la llamada al sistema en el programa en C++ para ejecutar todos los comandos que el programa C++ recibe del usuario.

12

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 ".

+0

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

5
//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"; 
    } 
} 
1

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.

Cuestiones relacionadas