Lỗi Xảy Ra
Bạn mở CMD, gõ một lệnh, và nhận ngay cái tát này:
'python' is not recognized as an internal or external command,
operable program or batch file.
Có thể là node, git, ffmpeg, hoặc thứ gì đó bạn vừa cài xong. Nó chạy tốt trên máy đồng nghiệp cách đây năm phút. Khoảnh khắc Windows kinh điển.
Tại Sao Lỗi Này Xảy Ra
CMD tìm các file thực thi bằng cách quét qua từng thư mục được liệt kê trong biến môi trường PATH — theo thứ tự, từ trên xuống dưới. Nếu thư mục chứa file .exe của bạn không có trong danh sách đó, CMD hoàn toàn không biết chương trình tồn tại, dù trình cài đặt chạy thành công mà không có lỗi nào.
Thường thì nguyên nhân rơi vào một trong ba trường hợp sau:
- Trình cài đặt bỏ qua việc thêm đường dẫn vào PATH — phổ biến với các ứng dụng portable và cài đặt thủ công
- Bạn đã thêm đường dẫn thủ công nhưng quên mở cửa sổ CMD mới sau đó
- Một mục PATH bị hỏng hoặc vô tình bị xóa (điều này xảy ra thường xuyên hơn bạn nghĩ)
Chẩn Đoán Nhanh
Bắt đầu bằng cách kiểm tra PATH hiện tại của bạn:
echo %PATH%
Khó đọc? PowerShell định dạng dễ nhìn hơn nhiều:
$env:PATH -split ';'
Dò qua kết quả để tìm thư mục chứa công cụ của bạn. Chẳng hạn, Python thường được cài vào C:\Python312\ hoặc C:\Users\YourName\AppData\Local\Programs\Python\Python312\ — tùy theo bạn chọn cài cho toàn hệ thống hay chỉ cho người dùng hiện tại.
Rồi kiểm tra xem Windows có thực sự tìm thấy file thực thi không:
where python
where node
where git
Có đường dẫn trả về? File thực thi tồn tại và PATH có lẽ ổn — hãy tìm nguyên nhân khác. Nhận thông báo "Could not find files for the given pattern(s)"? Thư mục đó thực sự không có trong PATH. Đến lúc sửa rồi.
Sửa Nhanh — Chỉ Cho Phiên Làm Việc Hiện Tại
Cần dùng ngay mà không muốn động vào cài đặt hệ thống? Thêm đường dẫn trực tiếp vào phiên CMD hiện tại:
set PATH=%PATH%;C:\path\to\your\tool
Ví dụ với Python — thường cần thêm cả thư mục chính lẫn thư mục Scripts:
set PATH=%PATH%;C:\Python312;C:\Python312\Scripts
Sẽ mất hiệu lực ngay khi bạn đóng CMD. Tốt cho trường hợp khẩn cấp, không phải giải pháp thực sự.
Sửa Vĩnh Viễn — Thêm Vào System PATH
Cách 1: Giao Diện Đồ Họa (Dễ Nhất)
- Nhấn
Win + R, gõsysdm.cpl, nhấn Enter - Chuyển sang tab Advanced → Environment Variables
- Trong phần System variables, chọn
Pathrồi nhấn Edit - Nhấn New, dán đường dẫn đầy đủ đến thư mục chứa công cụ
- Nhấn OK qua tất cả các hộp thoại
- Mở cửa sổ CMD mới và kiểm tra — các cửa sổ đang mở sẽ không nhận thay đổi
Cách 2: PowerShell (Có Thể Viết Script)
# Thêm vào PATH của người dùng (không cần quyền admin)
$newPath = "C:\path\to\your\tool"
$currentPath = [Environment]::GetEnvironmentVariable("PATH", "User")
if ($currentPath -notlike "*$newPath*") {
[Environment]::SetEnvironmentVariable("PATH", "$currentPath;$newPath", "User")
Write-Host "PATH updated."
} else {
Write-Host "Already in PATH."
}
Để áp dụng cho toàn bộ hệ thống với tất cả người dùng, thay "User" bằng "Machine" và chạy PowerShell với quyền Administrator.
Cách 3: setx (Một Dòng Lệnh Nhanh)
setx PATH "%PATH%;C:\path\to\your\tool"
Lưu ý: setx âm thầm cắt bớt PATH ở 1024 ký tự. Nếu PATH của bạn đã có hơn 20 mục, hãy dùng phương pháp giao diện đồ họa hoặc PowerShell — bạn sẽ không nhận được cảnh báo khi nó bị cắt.
Đường Dẫn Mặc Định Của Các Công Cụ Phổ Biến
# Python
C:\Python312\
C:\Python312\Scripts\
C:\Users\<name>\AppData\Local\Programs\Python\Python312\
# Node.js
C:\Program Files\nodejs\
# Git
C:\Program Files\Git\bin\
C:\Program Files\Git\cmd\
# FFmpeg (cài thủ công)
C:\ffmpeg\bin\
# Java (JDK 21)
C:\Program Files\Java\jdk-21\bin\
Trường Hợp Đặc Biệt: Đã Có Trong PATH Nhưng Vẫn Lỗi
Đôi khi where python trả về đường dẫn hợp lệ, nhưng chạy python vẫn báo lỗi. Có ba nguyên nhân cần kiểm tra:
- Nhiều bản Python được cài: Phiên bản từ Windows Store tạo ra một file giả che khuất trình thông dịch thực. Chạy
where /R C:\ python.exeđể liệt kê mọi bản sao trên ổ đĩa, rồi xác định cái nào được ưu tiên. - App execution aliases: Vào Settings → Apps → Advanced app settings → App execution aliases. Tắt Python nếu nó đang trỏ sai chỗ.
- Thứ tự trong PATH quan trọng: CMD dùng kết quả khớp đầu tiên tìm được. Một file giả ở vị trí 3 sẽ thắng file thực ở vị trí 8. Kéo mục đúng lên đầu trong trình chỉnh sửa giao diện đồ họa.
Xác Nhận Đã Sửa Thành Công
- Đóng tất cả cửa sổ CMD và PowerShell đang mở — chúng đang dùng trạng thái cũ
- Mở một cửa sổ CMD mới
- Chạy:
where python
python --version
Kết quả mong đợi:
C:\Python312\python.exe
Python 3.12.x
Cả hai dòng hiển thị gọn gàng? Xong. Vẫn còn lỗi? Kiểm tra xem đường dẫn bạn đã thêm có thực sự chứa file .exe không:
dir C:\Python312\python.exe
Thêm: Giới Hạn Độ Dài PATH
Windows giới hạn PATH ở 2048 ký tự trong registry (user + system cộng lại). Khi chạm ngưỡng đó, các mục mới bị bỏ qua âm thầm — không có lỗi, không có gì. Kiểm tra bạn đang ở đâu:
powershell -command "[Environment]::GetEnvironmentVariable('PATH','Machine').Length"
Gần chạm 2000? Hãy rà soát lại PATH trước. Xóa các mục trỏ đến chương trình bạn đã gỡ cài đặt, rồi mới thêm mục mới. Các mục cũ từ Python 3.9, Node 16, và cái Java SDK từ năm 2021 cộng lại nhanh lắm.

