2009-09-25 37 views

Trả lời

6

Bạn có thể muốn xem các cuộc gọi system, ShellExecuteCreateProcess để tìm hiểu xem cuộc gọi nào phù hợp trong trường hợp này.

0

Bạn có thể sử dụng cuộc gọi hệ thống trong chương trình C++ để thực hiện tất cả các lệnh mà chương trình C++ được từ người sử dụng.

12

Có hai tùy chọn có sẵn để chạy tệp lô trên Windows từ C/C++.

Trước tiên, bạn có thể sử dụng system (hoặc _wsystem cho ký tự rộng).

"Các chức năng hệ thống chuyển lệnh để thông dịch lệnh, mà thực hiện chuỗi như là một lệnh hệ điều hành. Hệ thống đề cập đến COMSPEC và biến môi trường PATH đó xác định vị trí các tập tin lệnh thông dịch viên (các file có tên CMD. EXE trong Windows 2000 trở lên). "

Hoặc bạn có thể sử dụng trực tiếp CreateProcess.

Lưu ý rằng đối với các tập tin batch:

"Để chạy một tập tin thực thi, bạn phải bắt đầu thông dịch lệnh; thiết lpApplicationName để cmd.exe và thiết lập lpCommandLine để các đối số sau đây:/c cộng với tên của tập tin thực thi. "

+0

Là ':: CreateProcess (L" cmd.exe "' thực sự hoạt động? Tôi đã nhận lỗi 2, ERROR_FILE_NOT_FOUND. NHƯNG, Trong cùng một cuộc gọi, nếu tôi thay thế bằng 'L" c: \\ Windows \\ System32 \\ cmd.exe "', sau đó nó hoạt động kỳ diệu ... – 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

Đưa các lệnh dos vào tập lệnh theo lô có vẻ như ý tưởng hay. Sau đó, bạn có thể sử dụng lệnh system.

Nhưng nếu chương trình C++ của bạn cũng cần thiết bị xuất bản của tập lệnh lô bạn đang chạy, bạn nên thử: _popen hoặc _wpopen.

Để biết thêm thông tin và mã mẫu, hãy truy cập MSDN.

Các vấn đề liên quan