Mục lục:

Batch Files: Một số kiến thức cơ bản ..: 8 bước
Batch Files: Một số kiến thức cơ bản ..: 8 bước

Video: Batch Files: Một số kiến thức cơ bản ..: 8 bước

Video: Batch Files: Một số kiến thức cơ bản ..: 8 bước
Video: Tự học Microsoft Word cấp tốc (FULL 1 TIẾNG) 2024, Tháng sáu
Anonim
Batch Files: Một số kiến thức cơ bản….
Batch Files: Một số kiến thức cơ bản….

Có thể hướng dẫn này sẽ dạy bạn một số kiến thức cơ bản về cách viết các tệp hàng loạt và sẽ chỉ cho bạn cách tạo trò chơi đoán số với một vài thao tác xoắn, chỉ để giữ cho mọi thứ trở nên thú vị…

Tôi đã học được hầu hết các kỹ năng nhắc lệnh và tất cả cách viết hàng loạt của tôi từ internet nói chung và Instuctables nói riêng. Tôi muốn gửi lời cảm ơn tới Neodudeman, người dùng của Guiductables vì những tài liệu hướng dẫn tuyệt vời của anh ấy về việc viết hàng loạt. Cảm ơn!

Bước 1: Tệp hàng loạt là gì?

Tệp hàng loạt là gì?
Tệp hàng loạt là gì?

Chà, hầu hết độc giả của tôi có thể đã biết tệp batch là gì, nhưng chỉ trong trường hợp….

Tệp lô chỉ đơn giản là một tập hợp (hàng loạt) các lệnh MSDOS thực thi tuần tự khi bạn chạy tệp lô. Các tệp hàng loạt bắt đầu dưới dạng tệp.txt trong notepad và trở thành tệp thực thi khi bạn lưu chúng dưới dạng tệp có đuôi.bat. Vì vậy, về cơ bản, tất cả những gì bạn làm là viết một tệp trong Notepad, và sau đó lưu nó dưới dạng, chẳng hạn như, "directionable.bat". Khi.bat được đặt ở cuối tên tệp, một tệp mới, đẹp sẽ xuất hiện, được đặt tên theo bất kỳ tên nào bạn đặt tên cho nó, với một biểu tượng bánh răng trông đẹp mắt. Được rồi, bây giờ chúng ta đã biết các tệp hàng loạt này là gì, hãy bắt tay vào viết!

Bước 2: Các lệnh cơ bản

Các lệnh cơ bản
Các lệnh cơ bản
Các lệnh cơ bản
Các lệnh cơ bản
Các lệnh cơ bản
Các lệnh cơ bản
Các lệnh cơ bản
Các lệnh cơ bản

Được rồi, bạn sẽ cần học một vài lệnh. Vì vậy, trước tiên, hãy mở dấu nhắc lệnh MSDOS. Mở cửa sổ bắt đầu, nhấp vào chạy, nhập "cmd.exe" và sau đó nhấp vào run. Okay. Đầu tiên, chúng ta sẽ xem xét các biến. Các biến là số, từ hoặc những thứ khác, (hơi rõ ràng), thay đổi. Command Prompt có một chức năng thay đổi. Nó có một số biến đã được đặt sẵn, chẳng hạn như TIME, DATE và một số biến khác. Tuy nhiên, hầu hết các biến, bạn có thể tự đặt. Nhấp vào cửa sổ Dấu nhắc Lệnh và nhập: Biến SET = ngẫu nhiên Không thành vấn đề nếu bạn viết hoa "SET" hay không, nhưng tôi thích viết hoa tất cả các lệnh của mình, đặc biệt là khi viết các tệp hàng loạt. Nó chỉ giúp bạn dễ dàng biết mình đang làm gì. Bây giờ hãy nhấn enter. Tốt cho bạn! Bạn đã đặt biến đầu tiên của mình! Nhưng chúng ta có thể làm gì với nó? ai quan tâm nếu tất cả những gì chúng ta có thể làm là đặt biến đúng không? Hóa ra, chúng ta có thể làm được nhiều điều hơn thế, nhưng trước tiên, hãy thử để máy tính cho chúng ta biết biến được đặt là gì. Được rồi, để máy tính đọc giá trị của một biến, chúng ta nhập tên của biến, trong trường hợp này là "biến" và đặt tên bên trong dấu%, như sau:% biến%. Hãy tiếp tục và nhập nó vào và nhấn enter:% variable% Weird error huh? Máy tính cho biết "" biến "không được nhận dạng là lệnh nội bộ hoặc lệnh bên ngoài, chương trình có thể hoạt động hoặc tệp hàng loạt." Vậy tại sao nó lại đưa ra lỗi đó? Về cơ bản, nó đã đưa ra lỗi đó vì Command Prompt xử lý giá trị của biến đó như thể bạn nhập nó vào chính mình. Vì vậy, khi bạn nhập% biến%, máy tính nghĩ rằng bạn đang yêu cầu nó thực hiện lệnh "ngẫu nhiên". Rõ ràng, chúng ta cần một cái gì đó khác để xem giá trị của biến của chúng ta. Đây là nơi xuất hiện lệnh ECHO. Lệnh ECHO chỉ đơn giản là ra lệnh cho Command Prompt lặp lại hoặc nói bất cứ điều gì bạn đã nhập sau ECHO. Vì vậy, nếu chúng ta gõ lệnh ECHO trước biến của chúng ta, chúng ta sẽ nhận được những gì chúng ta muốn: ECHO% biến% There! Bây giờ chúng tôi đã có những gì chúng tôi muốn! Máy tính in ra "ngẫu nhiên". Rõ ràng, đây là giá trị chúng tôi đã nhập cho biến của mình, vì vậy đó là kết quả chúng tôi muốn. Trong bước tiếp theo, chúng ta sẽ tìm hiểu thêm về các biến và cách chúng ta có thể sử dụng chúng.

Bước 3: Sử dụng Lệnh SET và các biến

Sử dụng Lệnh và Biến SET
Sử dụng Lệnh và Biến SET
Sử dụng Lệnh và Biến SET
Sử dụng Lệnh và Biến SET

Được rồi, bây giờ chúng ta đã biết các biến là gì, chúng ta có thể làm gì khác với chúng? Chà, chúng ta có thể làm toán, chúng ta có thể sử dụng chúng làm điều kiện để viết chương trình và các tệp hàng loạt, chúng ta có thể thực hiện số học cơ bản, chúng ta có thể thực hiện các lệnh, v.v. Chúng ta sẽ không đi sâu vào mọi thứ bạn có thể làm với biến, nhưng chúng ta sẽ thảo luận về một số khía cạnh quan trọng của biến funtion. Đầu tiên, lệnh SET chỉ tạo ra các biến chuỗi. Điều này có nghĩa là nó sẽ không thêm hoặc thực hiện bất kỳ phép toán nào khác. Nếu bạn yêu cầu máy tính thêm 1 vào một biến có giá trị là 1, nó sẽ cung cấp cho bạn giá trị 1 + 1. Nếu chúng ta muốn nó thực sự thêm hai số, chúng ta cần đặt "/ a" sau lệnh SET. Do đó, chúng ta nhập: SET / a varible = (value) Bây giờ, giả sử chúng ta muốn đặt một biến vào tệp lô mà người dùng sẽ cung cấp. Chúng tôi có thể muốn làm điều này nếu chúng tôi tính toán các giá trị theo một công thức hoặc, trong trường hợp của chúng tôi, nếu chúng tôi muốn người dùng đoán một số mà máy tính đã đưa ra. Để tạo ra một biến do người dùng chỉ định, chúng ta thêm a / p vào sau lệnh SET, và chúng ta để vùng sau = trống: Biến SET / p = OK! Một biến do người dùng chỉ định! Nếu chúng ta đặt dòng này trong một tệp lô, thì lô sẽ chạy cho đến khi đến dòng này và sau đó nó sẽ đợi người dùng nhập trước khi tiếp tục. Một điều thú vị khác về / p là nó hoàn toàn phủ nhận / a. Khi chúng ta bao gồm a / p, chúng ta chỉ có thể bỏ qua / a. Điều tiếp theo chúng ta sẽ tìm hiểu về nó tạo ra các biến ngẫu nhiên. Nếu chúng ta muốn máy tính chọn một số ngẫu nhiên cho một biến, chúng ta chỉ cần gõ lệnh SET, theo sau là biến, sau đó đặt biến bằng% RANDOM%. Một lần nữa, không cần vốn, nhưng thích thì làm. Vì vậy, chúng tôi nhập: SET / a variable =% RANDOM% Rõ ràng, đây không phải là một biến do người dùng chỉ định, vì vậy chúng tôi bao gồm / a. Mát mẻ! Vì vậy, bây giờ chúng ta biết làm thế nào để tạo ra một số ngẫu nhiên! Nhưng nó ngẫu nhiên như thế nào? Chà, hóa ra máy tính chọn một số từ 0 đến khoảng 37.000. Tôi không chắc con số chính xác là bao nhiêu. Nhưng nếu chúng ta muốn một số nhỏ hơn thì sao? Giả sử, như trong Có thể hướng dẫn này, chúng ta muốn một con số có thể quản lý được cho một thứ gì đó giống như trò chơi đoán? Chà, đó là nơi lệnh IF xuất hiện….

Bước 4: Lệnh IF và GOTO. Quyền lực trong tay người viết hàng loạt

Lệnh IF và GOTO. Quyền lực trong tay Người viết hàng loạt
Lệnh IF và GOTO. Quyền lực trong tay Người viết hàng loạt

Vì vậy, chúng tôi muốn tạo ra một con số có thể quản lý được. Giả sử chúng ta muốn tạo ra một số ngẫu nhiên từ 1 đến 20. Được rồi, nói thì dễ, nhưng giá trị NGẪU NHIÊN chọn một số từ 1 đến 37, 000. Đó là những gì chúng ta sẽ sử dụng IF. Về cơ bản, lệnh IF cho biết NẾU điều gì đó xảy ra, hoặc NẾU điều gì đó bằng, hoặc không bằng, một giá trị nhất định, THÌ LÀM THẾ NÀY. Vì vậy, IF đặt các lệnh có điều kiện. Chúng tôi muốn tạo ra một số nhỏ hơn hai mươi, nhưng lớn hơn một, rõ ràng, chúng tôi sẽ bắt đầu với việc yêu cầu máy tính chọn một số ngẫu nhiên, nhưng sau đó chúng tôi cần phải có khả năng yêu cầu nó chọn một số mới số nếu số nó chọn không phù hợp với yêu cầu của chúng tôi. Đó là nơi xuất hiện lệnh GOTO. GOTO chỉ cần ra lệnh cho máy tính ĐI ĐẾN một nhãn nhất định trong mã. Các nhãn trông như thế này:: pickBất kỳ từ nào được đặt sau dấu hai chấm đều trở thành nhãn mà chúng ta có thể truy cập bằng lệnh GOTO. Vì vậy, nếu chúng ta muốn chuyển đến phần mã có nhãn "pick" ở trên nó, chúng ta chỉ cần nhập: GOTO pickAlright, vì vậy hãy tiếp tục với mã của chúng ta. Chúng tôi đã yêu cầu máy tính chọn một số ngẫu nhiên, vì vậy chúng tôi đã nhập: SET / a answer =% RANDOM% Bây giờ chúng tôi muốn kéo số này xuống một phạm vi nhỏ hơn. Vì vậy, chúng tôi sẽ gọi lệnh IF. Một cái gì đó như thế này sẽ thực hiện thủ thuật: IF% answer% GTR 20 GOTO pick Điều này yêu cầu máy tính chọn GOTO NẾU câu trả lời là GReaTer hơn 20. Chúng tôi cũng có thể đặt bất kỳ điều kiện nào sau đây vào lệnh IF đó: EQU - EqualNEQ - Not EqualLSS - Ít hơn GTR - Lớn hơnLEQ - Nhỏ hơn hoặc Bằng ToGEQ - Lớn hơn hoặc Bằng ToThus, với IF, GOTO, các nhãn và các vết bớt này, chúng ta có thể thao tác với tệp hàng loạt của mình theo bất kỳ cách nào chúng ta chọn. Được rồi, vì vậy chúng tôi đã có số ngẫu nhiên của mình dưới hai mươi bây giờ và đây là những gì chúng tôi có cho đến nay:: pickSET / a answer =% RANDOM% IF% answer% GTR 20 GOTO pickNow, hãy đảm bảo rằng máy tính không ' t chọn 0 cho câu trả lời.:pickSET / a answer =% RANDOM% IF% answer% GTR 20 GOTO pickIF $ answer% EQU 0 GOTO pickOkay! Bây giờ chúng ta có một số có thể sử dụng được từ 1 đến 20. Chúng ta hãy chuyển sang phần thịt của Lô.

Bước 5: Thịt của trò chơi của chúng ta

Thịt của trò chơi của chúng tôi
Thịt của trò chơi của chúng tôi

Được rồi, chúng tôi có số ngẫu nhiên của mình. Chúng tôi cũng muốn đếm số lần đoán mà người chơi của chúng tôi thực hiện, vì vậy chúng tôi sẽ đặt một biến khác: SET / a đoánnum = 0 Điều đó đặt biến geussnum thành 0 và chúng tôi đã cung cấp cho nó tham số / a, vì vậy chúng tôi sẽ có thể thêm vào nó mỗi khi người dùng đoán. Chúng tôi có một số ngẫu nhiên, và chúng tôi đã đặt số lượng dự đoán. Bây giờ chúng tôi cần một số hướng dẫn và chúng tôi cần một số thông tin người dùng nhập cho số đoán. Chắc giờ bạn đã hiểu hầu hết điều này, vì vậy tôi sẽ chỉ cho bạn mã:: beginECHO Tôi sẽ nghĩ về một sốECHO mà tôi đang nghĩ….. SET / a GuessNum = 0 (ECHO này là hai dòng và đặt số lần đoán thành 0): pickASET / a Answer =% RANDOM% IF% Answer% GTR 20 GOTO pickAIF% Answer% EQU 0 GOTO pickAECHO Tôi đang nghĩ đến một số từ 1 đến 20ECHO Hãy đoán xem tôi đang nghĩ gì trong tổng số. (Phần này lặp lại cho đến khi nó ĐẶT số ngẫu nhiên của chúng tôi và sau đó ECHO hướng dẫn cho trình phát của chúng tôi): RetrySET / p Đoán = IF% Đoán% LSS% Trả lời% ECHO Số của tôi cao hơn. IF% Đoán% GTR% Trả lời% ECHO Số của tôi thấp hơn. IF% Đoán% ==% Trả lời% GOTO ENDECHO. SET / a GuessNum =% GuessNum% + 1GOTO Thử lại (Phần này yêu cầu máy tính yêu cầu nhập của người dùng và sau đó lặp lại liên tục cho đến khi người dùng chọn số chính xác. Sau đó, nó ĐI ĐẾN nhãn END): ENDECHO Bạn đã đúng! Câu trả lời là% Trả lời% ECHO Phải mất% GuessNum% Guesses. ECHO. PAUSECLSECHO Bạn có muốn chơi lại không? ECHO Y / N? SET / p play = IF% play% EQU y GOTO beginIF% play% EQU n GOTO closeIF% play% GTR y GOTO playagainIF% play% LSS y GOTO playagainIF% play% GTR n GOTO playagainIF% play% LSS n GOTO playagain (Đây là phần kết thúc của chúng tôi. Phần này cho người dùng biết họ đã đoán bao nhiêu lần và sau đó hỏi họ có muốn để chơi lại. Lưu ý rằng chúng ta cũng có thể sử dụng EQU, GTR và LSS với các chữ cái.) Được rồi! Nếu bạn chỉ cần sao chép mã này, bạn sẽ có một trò chơi đoán hợp pháp. Không thực sự lạ mắt, nhưng này, nó tốt hơn hầu hết mọi người có thể làm. Nhưng chúng tôi sẽ thêm một chút thay đổi nhỏ, chỉ để làm cho mọi thứ trở nên thú vị….

Bước 6: Vòng xoắn

Vắt
Vắt
Vắt
Vắt
Vắt
Vắt

Bây giờ, chúng tôi có một trò chơi đang hoạt động ngay bây giờ, nhưng chúng tôi muốn làm cho nó xen kẽ hơn một chút. Làm thế nào về việc thêm một số khuyến khích để người chơi của chúng tôi đoán đúng số? Làm thế nào về việc chúng tôi làm gì đó như.. tắt máy tính của họ nếu họ không đoán số? Điều này quả thật rất tuyệt! Được rồi, bây giờ chúng ta sẽ thêm một đoạn mã nhỏ để thực hiện những thay đổi này. Đầu tiên, chúng tôi sẽ thêm một dòng vào phần mã mà chúng tôi đã gắn nhãn "thử lại". Vì vậy, hãy đi tìm phần đó. Nó trông giống như thế này:: RetrySET / p Guess = IF% Guess% LSS% Answer% ECHO My Number cao hơn. IF% Guess% GTR% Answer% ECHO My Number is Lower. IF% Guess% ==% Answer% GOTO ENDECHO. SET / a GuessNum =% GuessNum% + 1GOTO RetryOkay, chúng tôi sẽ thêm dòng này ngay sau "ECHO". (Khi chúng ta đặt dấu chấm sau ECHO, nó sẽ để lại một dòng trống.) Đây là mã mới: IF% GuessNum% EQU 4 GOTO shutdownGKhi chúng ta thêm dòng này, phần sẽ giống như sau:: RetrySET / p Guess = IF% Guess% LSS% Trả lời% ECHO Số của tôi cao hơn. IF% Đoán% GTR% Trả lời% ECHO Số của tôi thấp hơn. IF% Đoán% ==% Trả lời% GOTO ENDECHO. SET / a GuessNum =% GuessNum% + 1IF% GuessNum% EQU 4 GOTO tắt máyGGOTO Thử lại Bây giờ, chắc hẳn điều này sẽ khá rõ ràng. Nó cho máy tính biết rằng nếu GuessNum EQUals 4, nó sẽ chuyển đến phần mã có nhãn "shutdownG". Vì vậy, chúng tôi muốn phần tắt này nói gì? Rõ ràng là nó phải được gắn nhãn "shutdownG". Tiếp theo, nó phải tắt máy tính. Lệnh tắt máy là "SHUTDOWN -s". Thao tác này sẽ tắt máy tính, nhưng chúng tôi muốn thêm một số vào lệnh. Chúng tôi sẽ thêm một "-f". Điều đó sẽ Buộc đóng tất cả các chương trình và chúng tôi sẽ thêm "-t 60". Điều đó sẽ yêu cầu máy tính hiển thị một cửa sổ và đợi 60 giây để đóng. Chúng tôi cũng sẽ thêm thông báo "-c" vào đây "". sẽ hiển thị thông báo trong cửa sổ tắt máy. Sau lệnh tắt máy của chúng tôi, chúng tôi sẽ sử dụng mã tương tự mà chúng tôi có ở trên, mã cho phép người chơi của chúng tôi chọn số và đưa ra phản hồi cho họ. Vì vậy, mã tắt của chúng tôi bây giờ trông giống như sau:: shutdownGSHUTDOWN -s -f -t 60 -c "Tiếp tục đoán! Nếu bạn không đoán đúng số, máy tính sẽ tắt!": shutdownG1SET / p Đoán = IF% Đoán% LSS% Trả lời% ECHO Số của tôi cao hơn. IF% Đoán% GTR% Trả lời % ECHO Số của tôi thấp hơn. IF% Đoán% ==% Trả lời% GOTO ENDECHO. SET / a GuessNum =% GuessNum% + 1GOTO shutdownG1Bây giờ chúng ta đã đặt máy tính thành SHUTDOWN và hiển thị một thông báo, nhưng chúng ta cũng cần thông báo máy tính để dừng tắt máy, nếu nó đã được bắt đầu. Vì vậy, chúng tôi sẽ thêm điều đó vào phần mã hóa có nhãn "end". Phần đó có dạng như sau:: ENDIF% GuessNum% GTR 4 SHUTDOWN -aECHO Bạn đã đúng! Câu trả lời là% Trả lời% ECHO Phải mất% GuessNum% Guesses. ECHO. PAUSECLSECHO Bạn có muốn chơi lại không? ECHO Y / N? SET / p play = IF% play% EQU y GOTO beginIF% play% EQU n GOTO closeIF% play% GTR y GOTO playagainIF% play% LSS y GOTO playagainIF% play% GTR n GOTO playagainIF% play% LSS n GOTO playagainChúng tôi muốn dừng việc tắt máy và chúng tôi thực hiện điều đó bằng lệnh "SHUTDOWN -a". Vì vậy, chúng tôi sẽ thêm một dòng như sau: IF% GuessNum% GTR 4 SHUTDOWN -aChúng tôi sẽ thêm lệnh đó ngay sau nhãn và điều đó sẽ yêu cầu máy tính chạy lệnh SHUTDOWN -a chỉ khi người chơi có đã thực hiện hơn bốn lần đoán và bắt đầu tắt máy. Được chứ! bạn sẽ có trò chơi của bạn hoàn thành ngay bây giờ! CHÚNG TÔI sẽ đảm bảo không có bất kỳ lỗi nào trong bước tiếp theo.

Bước 7: Các bước cuối cùng

Các bước cuối cùng
Các bước cuối cùng

Được rồi, bây giờ nếu bạn xâu chuỗi tất cả mã hóa đó lại với nhau, thì bạn sẽ có một cái gì đó giống như thế này:: beginECHO Tôi sẽ nghĩ về một con sốECHO Tôi đang nghĩ….. SET / a GuessNum = 0: pickASET / a Answer =% RANDOM% IF% Answer% GTR 20 GOTO pickAIF% Answer% EQU 0 GOTO pickAECHO Tôi đang nghĩ đến một số từ 1 đến 20ECHO Hãy đoán xem tôi đang nghĩ đến con số nào.:RetrySET / p Guess = IF% Guess % LSS% Trả lời% ECHO Số của tôi cao hơn. IF% Đoán% GTR% Trả lời% ECHO Số của tôi thấp hơn. IF% Đoán% ==% Trả lời% GOTO ENDECHO. SET / a GuessNum =% GuessNum% + 1IF% GuessNum% EQU 4 GOTO tắt GGOTO Thử lại: ENDIF% GuessNum% GTR 4 SHUTDOWN -aECHO Bạn đã đúng! Câu trả lời là% Answer% ECHO Phải mất% GuessNum% Guesses. ECHO. PAUSECLSECHO Bạn có muốn chơi lại không? ECHO Y / N? SET / p play = IF% play% EQU y GOTO beginIF% play% EQU n GOTO closeIF% play% GTR y GOTO playagainIF% play% LSS y GOTO playagainIF% play% GTR n GOTO playagainIF% play% LSS n GOTO playagain: closeECHO Cảm ơn bạn đã chơi! PAUSEEXIT cmd: shutdownGSHUTDOWN -s -f -t 60 -c "Tiếp tục đoán ! Nếu bạn không đoán đúng số, máy tính sẽ tắt! ": ShutdownG1SET / p Đoán = IF% Đoán% LSS% Trả lời% ECHO Số của tôi cao hơn. IF% Đoán% GTR% Trả lời% ECHO Số của tôi là Lower. IF% Guess% ==% Answer% GOTO ENDECHO. SET / a GuessNum =% GuessNum% + 1GOTO shutdownG1Đó là mọi thứ chúng ta cần đúng không? Vì vậy, hãy tiếp tục và lưu tệp notepad.txt mà bạn có dưới dạng GuessGame.bat. Trên thực tế, bạn có thể đặt tên nó bất cứ điều gì bạn muốn, miễn là bạn đặt.bat ở cuối. Được rồi, hãy nhấp vào biểu tượng và chạy chương trình! Nó đã hoạt động? Tốt thôi. Nó đang làm một số thứ kỳ lạ phải không? Hóa ra là khi chúng ta viết một Batch như thế này, dấu nhắc lệnh ECHO mọi lệnh chúng ta đưa ra, giống như khi chúng ta nhập chúng vào dấu nhắc lệnh. Vì vậy, trò chơi hoạt động, nhưng nó hơi lộn xộn và không rõ ràng. Chúng ta có thể làm bất cứ điều gì về điều này? Chuẩn rồi! Tất cả những gì chúng ta phải làm là gõ dòng này ngay từ đầu mã của chúng ta: @ECHO OFF Điều này yêu cầu máy tính TẮT ECHO. Và dấu @ ở chỗ ăn xin cho biết TẮT ECHO cho mọi lệnh. Nếu chúng ta bỏ đi @ đó, thì nó sẽ chỉ TẮT ECHO cho một lệnh.

Bước 8: Tất cả đã hoàn tất

Xin chúc mừng! Bạn vừa viết một trò chơi tập tin Batch. Khá đơn giản phải không? Nếu bạn có thể xử lý điều này, thì bạn có thể tìm ra cách thực hiện khá nhiều với tệp Batch. Chỉ cần chơi với nó, làm một số thử nghiệm. Đề phòng trường hợp bạn không thể làm được thứ gì đó hoặc trong trường hợp tôi bỏ sót thứ gì đó trong quá trình viết mã đó, tôi sẽ cung cấp cho bạn tệp ở đây.

Đề xuất: