Shell window viết bởi c,c++

Hiện e đang viết 1 shell window bằng c,c++
có tham khảo trên msdn và cũng làm được 1 số cơ bản như thời gian,chạy,tắt 1 tiến trình…
nhưng khi tìm kiếm hàm in ra danh sách tiến trình thì k hiểu lắm :slight_smile: dir .
cách 1 shell có thể thực hiện 1 file .bat??? (e k hiểu cái này lắm ,viết .bat để chạy j đó thì e còn hiểu :blush: :blush: )
mong mọi người giúp đỡ…

1 Like

.bat được chạy mặc định bằng cmd.exe
Tức khi chạy file.bat, đường dẫn của nó sẽ đường truyền vào argument vị trí 1. Từ đó cmd đọc file.bat với đường dẫn trên, lấy các commands trong đó ra và thực thi.

Còn về lệnh dir bạn có thể tham khảo ở đây: http://stackoverflow.com/questions/612097/how-can-i-get-the-list-of-files-in-a-directory-using-c-or-c

2 Likes

.bat thì t biết cách tạo,tạo 1 số .bat dễ làm…
nhưng ý t là cách để 1 shell thực hiện 1 file .bat?
.bat thực hiện nhờ các hàm,câu lệnh trên cmd,giờ nếu như muốn shell thực hiện thì chả nhẽ phải xây dựng lại các hàm,lệnh đó,…
=> việc xây dựng lại thì tạm thời có thể với các lệnh đơn giản nhưng để .bat liên kết vs shell?? thì sao???

Ý bạn là muốn tạo 1 chương trình thực thi được file .bat? Và các lệnh trong đó vẫn chạy trên cmd? Ko cần làm lại?? ô-o
Mình chưa hiểu ý bạn lắm :sweat_smile:

2 Likes

ý mình là muốn tạo 1 chương trình chạy từ c,c++ có thể thực thi được file .bat?
ví dụ : như nếu chạy file .exe thì sau khi chạy xong sẽ hiện ra cửa sổ cho tiến trình đó
thực thi đây có thể là chạy dc file .bat đó ( đã thử test cùng lệnh vs .exe nhưng .bat k chạy??)
hoặc tạo dc .bat trên đó thì sao nhỉ?? == :heart_eyes: :sweat_smile:

THeo mình biết thì file .bat chả qua là file khi mở lên. cmd sẽ đọc các lệnh trong file đó và thực hiện ._.
Nên nếu bạn muốn làm 1 phần mềm thực thi file .bat thì chỉ cần read nó như 1 text file rồi dùng hàm system để thực thi lệnh là đc
(Hy vọng đúng ý bạn :grin:)

1 Like

bạn nói rõ hơn đoạn đọc nó như 1 text file rồi dùng hàm system để thực thi lệnh được không?
mình không hiểu rõ ý đoạn này lắm?

tức là

istream f;
string commands;
f.open("a.bat");
while(!f.eof) {
 getline(cin,commands);
 system("commands.c_str()");
 //hàm system là hàm mà nó sẽ thực thi 1 câu lệnh dos/terminal được đưa vào.
}
2 Likes
#include"conio.h"
#include"stdio.h"
#include"string.h"
#include"stdlib.h"

void main()
{
char w[255];
FILE *f=fopen("testbat.bat","rt");
if(f==NULL)
	{
	printf("\nLoi doc file.");
	getch();
	exit(1);
	}
else
	{
	while(!feof(f))
		{
		fgets(w,255,f);
		printf(""); 
		puts(w); // system ???
		}
	fclose(f);
	//printf("\nDoc thanh cong.\n");
	}
getch();
}

hnay mới rảnh làm thử,đọc đc text,xử lý được dấu enter cho cmd nhưng k biết cho hàm system vào kiểm j???

1 Like

ok.t ra rồi.thanks :))))
hóa ra chỉ cần system(w) chứ nếu viết như kiểu system(“commands.c_str()”) thì máy sẽ tự hiểu là mình đang dùng hàm system vs giá trị commands.c_str() nên sẽ báo k nhận điên được

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?