2009-09-25 8 views
9

मेरा उद्देश्य: मैं एक सी ++ प्रोग्राम बनाना चाहता हूं जो डॉस कमांड का उपयोग कर सकता है। विकल्प: मैं बैच फ़ाइल बना सकता हूं और इसमें डॉस कमांड डाल सकता हूं। लेकिन इस फ़ाइल का उपयोग C++ प्रोग्राम से कैसे करें ...?हम सी ++ में बैच फ़ाइल का उपयोग कैसे कर सकते हैं?

उत्तर

6

शायद आप इस परिदृश्य में कौन सा उचित है यह जानने के लिए system, ShellExecute, और CreateProcess कॉल देखना चाहते हैं।

0

आप सी में सिस्टम कॉल ++ कार्यक्रम सभी आदेशों सी ++ प्रोग्राम उपयोगकर्ता से हो जाता है निष्पादित करने के लिए उपयोग कर सकते हैं।

12

सी/सी ++ से विंडोज पर बैच फ़ाइलों को चलाने के लिए दो विकल्प उपलब्ध हैं।

सबसे पहले, आप system (या विस्तृत वर्णों के लिए _wsystem) का उपयोग कर सकते हैं।

"प्रणाली समारोह आदेश दुभाषिया है, जो एक ऑपरेटिंग सिस्टम कमांड के रूप में स्ट्रिंग कार्यान्वित करने के लिए आदेश गुजरता है। प्रणाली COMSPEC और पथ वातावरण चर कि कमांड दुभाषिया फ़ाइल (फ़ाइल अध्यक्ष एवं प्रबंध निदेशक नामित पता लगाने के लिए संदर्भित करता है। विंडोज 2000 और बाद में EXE)। "

या आप सीधे CreateProcess का उपयोग कर सकते हैं।/सी प्लस का नाम:;:

नोट बैच फ़ाइलों के लिए कि सेट lpApplicationName cmd.exe को और lpCommandLine सेट निम्नलिखित तर्कों को

"एक बैच फ़ाइल को चलाने के लिए, आपको आदेश दुभाषिया शुरू करनी चाहिए बैच फ़ाइल। "

+0

क्या है :: :: CreateProcess (एल "cmd.exe" वास्तव में काम करता है? मुझे त्रुटि 2, ERROR_FILE_NOT_FOUND मिली। लेकिन, उसी कॉल में, यदि मैं 'एल" सी के साथ प्रतिस्थापित करता हूं: \\ Windows \\ System32 \\ cmd.exe "', तो यह चमत्कारी रूप से काम करता है ... – 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

डॉस लाना अंदर आदेश बैच स्क्रिप्ट एक अच्छा विचार की तरह लगता है। तो आप निश्चित रूप से system कमांड का उपयोग कर सकते हैं।

लेकिन यदि आपके सी ++ प्रोग्राम को बैच स्क्रिप्ट के स्टडआउट की भी आवश्यकता है, तो आपको यह प्रयास करना चाहिए: _popen या _wpopen

अधिक जानकारी और कोड नमूना के लिए MSDN पर जाएं।

संबंधित मुद्दे