2009-09-25 2 views

risposta

6

Probabilmente si desidera esaminare le chiamate system, ShellExecute e CreateProcess per individuare quale sia appropriato in questo scenario.

0

È possibile utilizzare chiamata di sistema in C++ programma da eseguire tutti i comandi che il programma C++ ottiene da parte dell'utente.

12

Sono disponibili due opzioni per eseguire file batch su Windows da C/C++.

Innanzitutto, è possibile utilizzare system (o _wsystem per caratteri larghi).

"La funzione del sistema passa comando per l'interprete dei comandi, che esegue la stringa come un comando del sistema operativo. Sistema riferisce alla COMSPEC e variabili di ambiente PATH che individuano il file di comando interprete (file denominato CMD. EXE in Windows 2000 e versioni successive. "

Oppure è possibile utilizzare direttamente CreateProcess.

Si noti che per i file batch:

"per eseguire un file batch, è necessario avviare l'interprete dei comandi; impostato lpApplicationName per cmd.exe e impostare lpCommandLine ai seguenti argomenti:/c più il nome di il file batch. "

+0

È ':: CreateProcess (L" cmd.exe "' funziona davvero? Ho ottenuto l'errore 2, ERROR_FILE_NOT_FOUND. MA, Nella stessa chiamata, se si sostituisce con 'L" c: \\ Windows \\ System32 \\ cmd.exe "", quindi funziona miracolosamente ... – 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

Mettere comandi DOS all'interno script batch sembra una buona idea. Quindi puoi ovviamente usare il comando system.

Ma se il programma C++ richiede anche lo stdout dello script batch in esecuzione, è necessario provare: _popen o _wpopen.

Per ulteriori informazioni e codice visita del campione MSDN.