IL MIO SCOPO: voglio fare un programma C++ che possa usare i comandi dos. OPZIONE: posso creare un file batch e inserirvi i comandi dos. ma come usare questo file dal programma C++ ...?come possiamo usare un file batch in C++?
risposta
Probabilmente si desidera esaminare le chiamate system
, ShellExecute
e CreateProcess
per individuare quale sia appropriato in questo scenario.
system("mybatchfile.bat");
È possibile utilizzare chiamata di sistema in C++ programma da eseguire tutti i comandi che il programma C++ ottiene da parte dell'utente.
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. "
//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";
}
}
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.
È ':: 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