MỤC ĐÍCH CỦA TÔI: tôi muốn tạo một chương trình C++ có thể sử dụng lệnh dos. TÙY CHỌN: tôi có thể tạo một tập tin thực thi và đưa vào đó các lệnh dos. nhưng cách sử dụng tệp này từ chương trình C++ ...?làm thế nào chúng ta có thể sử dụng một tập tin thực thi trong c + +?
Trả lời
Bạn có thể muốn xem các cuộc gọi system
, ShellExecute
và CreateProcess
để tìm hiểu xem cuộc gọi nào phù hợp trong trường hợp này.
system("mybatchfile.bat");
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.
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. "
//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";
}
}
Đư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.
- 1. Làm thế nào để bạn sử dụng SETLOCAL trong một tập tin thực thi?
- 2. Làm thế nào để sử dụng psake từ một tập tin thực thi?
- 3. Làm thế nào để có được một tập tin thực thi để xử lý không gian trong tên tập tin?
- 4. Sử dụng dlopen() trên một tập tin thực thi
- 5. Làm thế nào chúng ta có thể gọi một hàm với "parameter = value" trong C++?
- 6. Sử dụng CMake, làm thế nào tôi có thể concat tập tin và cài đặt chúng
- 7. C# làm thế nào bạn có thể nhận được đầu ra của một tập tin thực thi khác?
- 8. Làm thế nào chúng ta có thể sử dụng các kênh trong Go thay cho mutex?
- 9. Làm thế nào để đọc nội dung tập tin vào một biến trong một tập tin thực thi?
- 10. % * có nghĩa là gì trong một tập tin thực thi
- 11. chúng ta có thể sử dụng CASE với EXEC
- 12. Làm thế nào để chạy nhiều tập lệnh SQL bằng cách sử dụng một tập tin thực thi?
- 13. Làm thế nào để nối chuỗi trong một tập tin thực thi Windows?
- 14. Thực thi trong một tập tin chiến tranh
- 15. Làm thế nào chúng ta có thể sử dụng MSHTML với VBA?
- 16. có/không có tập tin thực thi
- 17. Khi nào chúng ta sử dụng ANTLR
- 18. chạy một tập tin thực thi từ C#
- 19. Làm thế nào để gửi một email đơn giản từ một tập tin thực thi Windows?
- 20. Chúng ta có thể viết macro trong C# cho Excel
- 21. chúng ta có thể sử dụng xpath với BeautifulSoup không?
- 22. Chúng ta có thể sử dụng pom.xml vào ANT
- 23. Làm thế nào một dịch vụ Windows có thể thực thi một ứng dụng GUI?
- 24. Làm thế nào để thực hiện cuộc gọi đến một tập tin thực thi từ tập lệnh Python?
- 25. chúng ta có thể sử dụng một số làm nút văn bản trong tệp XML không?
- 26. làm thế nào để thực hiện các tập tin thực thi chờ đợi cho đến khi một tập tin thực thi hoàn thành?
- 27. Vấn đề thực hiện một tập tin thực thi trong một ứng dụng Java
- 28. Tạo một tập tin thực thi với lệnh "IF"
- 29. Chúng ta có một autochomp trong Perl?
- 30. Làm thế nào để khởi động một ứng dụng mà không cần chờ đợi trong một tập tin thực thi?
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