File .bat / .cmd (Batch File) là gì?
**Batch file** (phần mở rộng .bat hoặc .cmd) là **file văn bản chứa chuỗi lệnh dòng lệnh (command-line)** của Windows (CMD / cmd.exe). Khi double-click, Windows sẽ thực thi lần lượt các lệnh bên trong. Dùng để: tự động hóa tác vụ lặp lại, cài đặt phần mềm, sửa cấu hình, backup, dọn dẹp, troubleshooting...
Tại sao file .bat xuất hiện trên Desktop?
| Nguyên nhân | Mô tả | Mức độ rủi ro |
| Bạn tự tạo / tải về | Script tự động cài tool, fix lỗi, cleanup, map network drive... | ✅ An toàn (nếu bạn hiểu nội dung) |
| Phần mềm cài đặt tạo ra | Một số installer tạo shortcut .bat trên Desktop để chạy cấu hình sau cài | ✅ An toàn (thường là vendor hợp pháp) |
| Malware / Script độc hại | Kẻ tấn công gửi file .bat qua email, download, USB – chạy lệnh xấu: xóa file, tắt AV, tải malware, reverse shell, thêm user admin, sửa registry... | ⚠️ NGUY HIỂM – Cần kiểm tra ngay |
| Penetration Test / Red Team | File .bat dùng trong quá trình test xâm nhập (nếu bạn là admin/security) | ✅ An toàn (nếu do bạn/đội ngũ tạo) |
| Windows Update / System Script | Hiếm khi đặt trên Desktop, thường ở System32/Tasks | ✅ An toàn |
Cách kiểm tra file .bat có an toàn không?
- KHÔNG double-click ngay!
- Chuột phải file → Chỉnh sửa (Edit) → Mở bằng **Notepad** (hoặc Notepad++, VS Code)
- Đọc toàn bộ nội dung lệnh. Tìm các lệnh **nguy hiểm**:
del /f /s /q (xóa file hệ thống)
format, diskpart (xóa ổ cứng)
net user /add, net localgroup administrators (tạo user admin ẩn)
reg add / reg delete (sửa registry – disable defender, firewall, UAC, RDP...)
powershell -enc, powershell -command (chạy script PowerShell encoded – thường che giấu mã độc)
certutil -decode / -urlcache -split -f (tải file từ net)
bitsadmin /transfer, curl, wget, Invoke-WebRequest (tải file)
schtasks /create (tạo task lịch – persistence)
sc create (tạo service – persistence)
bcdedit (sửa boot config – bootkit)
vssadmin delete shadows (xóa shadow copy – ransomware behavior)
- Nếu **không hiểu lệnh nào** → **KHÔNG CHẠY**. Upload lên VirusTotal.com hoặc Hybrid Analysis để quét.
- Kiểm tra **chữ ký số (Digital Signature)**: Chuột phải → Properties → Digital Signatures. Có chữ ký Microsoft / Vendor uy tín = an toàn hơn.
- Kiểm tra **nguồn gốc**: Tải từ đâu? Email đính kèm? Web lạ? USB lạ?
Cách tắt cảnh báo "These files might be harmful to your computer" khi chạy .bat từ network drive
Windows chặn chạy script từ network share (UNC path) hoặc Intranet zone không tin cậy.
- Mở Internet Options (inetcpl.cpl) → Tab Security
- Chọn Local Intranet → Sites → Advanced
- Thêm IP/hostname của file server (VD:
file://192.168.1.100, file://server-name) → Add
- OK → Close → OK
- Hoặc: Tùy chỉnh Level (Custom Level) → Launching applications and unsafe files → Enable (not secure) – KHÔNG KHUYẾN NGHỊ (giảm bảo mật)
Cách an toàn hơn: Copy file .bat về máy local (Desktop, Documents) → chạy từ local.
Các biến %%, %~dp0, %* trong file .bat
%%A: Biến vòng lặp FOR (trong file .bat phải dùng %%, CMD trực tiếp dùng %A)
%~dp0: Thư mục chứa file batch đang chạy (Drive + Path) – rất hữu ích để tham chiếu file cùng thư mục
%1, %2... %9: Tham số dòng lệnh truyền vào
%*: Tất cả tham số
%ERRORLEVEL%: Mã thoát của lệnh trước
Chạy file .bat ẩn (Hidden / Silent mode)
Batch file hữu ích cho Admin / Security (Ví dụ an toàn)
@echo off
rem === System Health Check Batch Script ===
rem Run as Administrator for full info
echo ==============================
echo SYSTEM HEALTH CHECK - %date% %time%
echo ==============================
echo.
echo [1] OS Version & Build:
ver
echo.
echo [2] Uptime:
systeminfo | find "System Boot Time"
echo.
echo [3] Disk Space (C:):
wmic logicaldisk where "DeviceID='C:'" get Size,FreeSpace,VolumeName /format:list
echo.
echo [4] Windows Defender Status:
powershell "Get-MpComputerStatus | Select-Object AMServiceEnabled, AntispywareEnabled, RealTimeProtectionEnabled, AntivirusSignatureLastUpdated"
echo.
echo [5] Windows Update Status:
powershell "Get-WindowsUpdateLog" 2>$null || powershell "(New-Object -ComObject Microsoft.Update.AutoUpdate).Results"
echo.
echo [6] Open Ports (Listening):
netstat -ano | findstr LISTENING
echo.
echo [7] Suspicious Scheduled Tasks (Non-Microsoft):
schtasks /query /fo csv /v | findstr /v "Microsoft" | findstr /v "TaskName"
echo.
echo Check completed. Press any key to exit.
pause >nul
Tóm tắt
- File
.bat/.cmd = Script lệnh Windows. Hữu ích cho automation.
- Xuất hiện trên Desktop: Có thể do bạn, phần mềm cài đặt, **HOẶC MALWARE**.
- LUÔN MỞ BẰNG NOTEPAD ĐỂ ĐỌC NỘI DUNG TRƯỚC KHI CHẠY.
- Nghi ngờ malware → Upload VirusTotal, chạy sandbox (Hybrid Analysis, ANY.RUN), cách ly mạng, quét AV/EDR đầy đủ.
- Tắt cảnh báo network drive: Thêm server vào "Local Intranet Sites" (an toàn) hoặc copy về local chạy.