TẠO FILE BAT SỬA LỖI THÔNG DỤNG TỰ ĐỘNG
Tập tin Batch (.bat) là cách để thực thi các công việc trên máy tính một cách tự động. Bạn có thể tự động hóa các tác vụ hàng ngày, rút ngắn thời gian cần thiết khi làm việc nào đó, và biến một quá trình phức tạp thành điều gì đó mà bất cứ ai cũng có thể làm được. Từ khi chương trình như AutoHotkey ra đời, nhiều người đã không muốn mất thời gian để viết hay tìm hiểu về tập tin .bat, thậm chí họ không biết những gì mà nó có thể làm. Nhưng lợi ích mà những tập tin .bat mang lại thì vẫn rất to lớn.
Giả sử bạn thường xuyên gặp các vấn đề về mạng, và luôn phải mở hộp thoại command prompt để nhập vào các lệnh như ipconfig /release, /renew hay cần xóa file tạm %temp%… Trong khi đó, chỉ cần một file BAT đơn giản sẽ giúp công việc này hiệu quả hơn, bạn còn có thể dùng file này cho tất cả các máy tính khác nếu muốn.
Có rất nhiều ứng dụng của .bat file tùy theo nhu cầu và sáng tạo của mỗi quản trị viên. Có rất nhiều batch file được viết dựa trên Wmic ( để hiểu hơn về Wmic các bạn xem bài viết tại đây) . Bây giờ chúng ta sẽ bắt đầu đi vào cấu trúc cơ bản của batch file nhé, cuối bài sẽ là 1 file .bat khá bự cho các IT Guy hỗ trợ người dùng tự động đơn giản và nhanh chóng hơn!
Bước 1: Tạo file BAT
Đầu tiên bạn tạo một text document mới trên desktop của mình (chuột phải chọn New > text document). Kích đúp chuột để mở file này, vào menu File > Save As…, tại cửa sổ Save As bạn nhập tên cho tập tin và thêm đuôi “.bat” (không có dấu nháy kép). Ví dụ chúng tôi đặt tên là testBAT.bat.
Tiếp theo, tại phần Save as Type chọn All Files (thay cho Text Document (*.txt)), kích Save để lưu lại.
Nếu bạn đã biết cách chạy những dòng lệnh trong command prompt, bạn sẽ có một Wiz cho việc tạo file BAT bởi chúng có cùng một thứ ngôn ngữ. Tất cả những gì bạn cần làm là “nói” cho command prompt biết rằng bạn muốn đặt các lệnh trong cùng một file, thay vì gõ chúng mỗi khi chạy command prompt. Điều này không những giúp bạn tiết kiệm thời gian và công sức mà còn cho phép đưa vào một số logic (như vòng lặp đơn giản, câu lệnh có điều kiện…) đó là những thủ tục có khả năng lập trình về mặt khái niệm.
Sau đây là 7 lệnh đơn giản mà bạn nên biết:
- TITLE: tên cửa sổ cho tập tin BAT.
- ECHO: lệnh in của file BAT. Bất cứ điều gì sau ECHO sẽ được hiển thị trong command prompt (như văn bản) trên từng dòng.
- ECHO OFF: lệnh này thường được đặt trên đầu của file BAT. Khi chạy file BAT có lệnh này, các lệnh phía dưới ECHO OFF sẽ không được hiển thị (tức là chỉ có nội dung, không cho biết lệnh nào được dùng).
- PAUSE: khi sử dụng lệnh này, một thông báo “press any key to continue…” sẽ hiển thị trên màn hình, toàn bộ lệnh trong file BAT sẽ tạm dừng cho đến khi bạn nhấn phím bất kỳ để khởi động lại. Bằng cách này bạn sẽ có cơ hội nhìn thấy những gì đang diễn ra trên màn hình.
- CLS: làm sạch màn hình cửa sổ DOS (rất hữu ích khi chúng trở nên dày đặc và lộn xộn).
- IPCONFIG: thông tin về mạng hiển thị trên DOS (rất hữu ích đối với các nhà quản trị mạng).
- PING: ping đến địa chỉ IP, cho biết bạn có thể liên hệ với máy tính đó hay không. Lệnh này cũng trả về độ trễ (ping time) và mặc định sẽ ping 3 lần.
Bước 3: Một số logic
Chúng ta cần lập kế hoạch cho chương trình của mình. Bất kỳ một nhà lập trình giỏi nào cũng suy nghĩ về khuôn khổ chung của công việc trước khi tiến hành đánh dấu gạch ngang vào những gì cần làm. Điều này giúp ngăn ngừa những sai lầm logic rất khó thực hiện lại.
Đối với chương trình trong bài viết này, chúng ta cần kiểm tra hệ thống mạng máy tính và những thiết lập internet với lệnh “ipconfig /all”, sau đó rà soát thông tin. Cuối cùng ping tới google.com để tìm hiểu xem chúng ta thực sự có quyền truy cập internet. Nếu mọi thứ đều tốt đẹp, ta sẽ cho tạm dừng chương trình.

Bước 4: Viết nội dung cho file BAT
Để chỉnh sửa nội dung cho tập tin .bat, kích chuột phải vào đó chọn “edit”. File BAT sẽ được mở bằng trình soạn thảo Notepad, ở đây bạn sẽ thấy một trang trống và sẵn sàng cho chúng ta nhập nội dung vào đó.
(Mỗi lệnh sẽ có dòng chú thích dạng CODE ::Comment, với phần in đậm là câu lệnh mà ta sử dụng).
ECHO OFF
::CMD se khong hien thi lenh nao duoc thu thi phia duoi.
ECHO Demo tao file BAT
:: In ra dong van ban
IPCONFIG /ALL
:: Hien thi thong tin ve mang tren cua so command prompt
PAUSE
:: Tam dung thuc thi cac lenh khac de nguoi dung xem cac thong tin quan trong.
PING http://www.google.com
:: Ping toi trang Google.com
ECHO Toan bo thong tin ve Google Ping duoc.
::In ra dong van ban
PAUSE
:: Cho phep nguoi dung xem ket qua. Boi vi day la dong lenh cuoi cung nen sau khi nhan phim bat ky, cua so command se duoc dong lai.
Bước 5: Chạy file BAT vừa tạo
Sau khi chèn nội cung cho file BAT, bạn lưu lại rồi kích đúp chuột vào đó để chạy file bat. Màn hình sẽ hiển thị kết quả như sau:
Vậy là bạn đã thành công!
Nếu muốn chỉnh sửa file BAT hãy mở file BAT bằng Notepad bằng cách chuột phải lên file BAT, chọn Open with > Notepad là được.
Tìm hiểu thêm về file BAT
Nếu bạn muốn tìm hiểu thêm về các file BAT, có thể xem các lệnh có sẵn tại đây. Sau đó bạn có thể viết các chương trình riêng cho mình hoặc tham khảo các ví dụ có sẵn tại đây.
Sử dụng các tập tin BAT là giải pháp thực sự hữu ích để chạy các chương trình (chẳng hạn như Java) chỉ với một dòng lệnh, giúp tiết kiệm thời gian thay vì phải gõ các dòng lệnh từ đầu. Sau khi nắm rõ được cách thức hoạt động và các lệnh của nó, người dùng có thể dễ dàng tạo cho mình những file phục vụ cho công việc riêng của mình một cách nhanh chóng.
Đoạn cuối mình gửi các bạn đoạn code có các option để user lựa chọn và chạy theo kịch bản nhé!
Chúc mọi người thành công !
REM –add the following to the top of your bat file–
chcp 65001
@echo off
:: BatchGotAdmin
:————————————-
REM –> Check for permissions
>nul 2>&1 “%SYSTEMROOT%\system32\cacls.exe” “%SYSTEMROOT%\system32\config\system”
REM –> If error flag set, we do not have admin.
if ‘%errorlevel%’ NEQ ‘0’ (
echo Requesting administrative privileges…
goto UACPrompt
) else ( goto gotAdmin )
:UACPrompt
echo Set UAC = CreateObject^(“Shell.Application”^) > “%temp%\getadmin.vbs”
set params = %*:”=””
echo UAC.ShellExecute “cmd.exe”, “/c %~s0 %params%”, “”, “runas”, 1 >> “%temp%\getadmin.vbs”
“%temp%\getadmin.vbs”
del “%temp%\getadmin.vbs”
exit /B
:gotAdmin
pushd “%CD%”
CD /D “%~dp0”
:————————————–
@echo off
title NGUYEN THANG – VRC
:menu
cls
echo ——————————————————————————–
echo PC Cleanup Utility – Sua cac loi thong dung
echo ——————————————————————————–
echo.
echo Select a tool – Chon yeu cau sua loi
echo =============
echo.
echo [0] Backup File KeToan
echo [1] Delete Internet Cookies – Sua cac loi dang nhap Website
echo [2] Delete Temporary Internet Files -Tang toc duyet Web
echo [3] Disk Cleanup – Tang toc do may tinh
echo [4] Disk Defragment – Chong phan manh o cung
echo [5] Delete Temporary Files – Xoa Files tam giup nhe may
echo [6] Reset Internet – Sua loi mat ket noi Internet
echo [7] Re-mapping Drive – Ket noi lai o dia chia se
echo [8] Restart PC – Fix cac loi treo may, update
echo [9] Exit – Thoat
echo.
set /p op=Run:
if %op%==0 goto 0
if %op%==1 goto 1
if %op%==2 goto 2
if %op%==3 goto 3
if %op%==4 goto 4
if %op%==5 goto 5
if %op%==6 goto 6
if %op%==7 goto 7
if %op%==8 goto 8
if %op%==9 goto exit
goto error
:0
@echo off
echo Bat Dau
set yy=%date:~-4%
set mm=%date:~-7,2%
set dd=%date:~-10,2%
set MYDATE=%mm%-%dd%-%yy%
mkdir C:\Users\Admin\Desktop\ITM\%MYDATE%
xcopy “\\10.54.0.200\ketoanvrc\” C:\Users\Admin\Desktop\ITM\%MYDATE% /E /S /Q /Y
echo Welcome Done Copy!
pause pause >nul
goto menu
:1
cls
echo ——————————————————————————–
echo Delete Internet Cookies
echo ——————————————————————————–
echo.
echo Deleting Cookies…
ping localhost -n 3 >nul
del /f /q “%userprofile%\Cookies\*.*”
cls
echo ——————————————————————————–
echo Delete Internet Cookies
echo ——————————————————————————–
echo.
echo Cookies deleted.
echo.
echo Press any key to return to the menu. . .
pause >nul
goto menu
:2
cls
echo ——————————————————————————–
echo Delete Temporary Internet Files
echo ——————————————————————————–
echo.
echo Deleting Temporary Files…
ping localhost -n 3 >nul
del /f /q “%userprofile%\AppData\Local\Microsoft\Windows\Temporary Internet Files\*.*”
cls
echo ——————————————————————————–
echo Delete Temporary Internet Files
echo ——————————————————————————–
echo.
echo Temporary Internet Files deleted.
echo.
echo Press any key to return to the menu. . .
pause >nul
goto menu
:3
cls
echo ——————————————————————————–
echo Disk Cleanup
echo ——————————————————————————–
echo.
echo Running Disk Cleanup…
ping localhost -n 3 >nul
if exist “C:\WINDOWS\temp”del /f /q “C:WINDOWS\temp\*.*”
if exist “C:\WINDOWS\tmp” del /f /q “C:\WINDOWS\tmp\*.*”
if exist “C:\tmp” del /f /q “C:\tmp\*.*”
if exist “C:\temp” del /f /q “C:\temp\*.*”
if exist “%temp%” del /f /q “%temp%\*.*”
if exist “%tmp%” del /f /q “%tmp%\*.*”
if not exist “C:\WINDOWS\Users\*.*” goto skip
if exist “C:\WINDOWS\Users\*.zip” del “C:\WINDOWS\Users\*.zip” /f /q
if exist “C:\WINDOWS\Users\*.exe” del “C:\WINDOWS\Users\*.exe” /f /q
if exist “C:\WINDOWS\Users\*.gif” del “C:\WINDOWS\Users\*.gif” /f /q
if exist “C:\WINDOWS\Users\*.jpg” del “C:\WINDOWS\Users\*.jpg” /f /q
if exist “C:\WINDOWS\Users\*.png” del “C:\WINDOWS\Users\*.png” /f /q
if exist “C:\WINDOWS\Users\*.bmp” del “C:\WINDOWS\Users\*.bmp” /f /q
if exist “C:\WINDOWS\Users\*.avi” del “C:\WINDOWS\Users\*.avi” /f /q
if exist “C:\WINDOWS\Users\*.mpg” del “C:\WINDOWS\Users\*.mpg” /f /q
if exist “C:\WINDOWS\Users\*.mpeg” del “C:\WINDOWS\Users\*.mpeg” /f /q
if exist “C:\WINDOWS\Users\*.ra” del “C:\WINDOWS\Users\*.ra” /f /q
if exist “C:\WINDOWS\Users\*.ram” del “C:\WINDOWS\Users\*.ram”/f /q
if exist “C:\WINDOWS\Users\*.mp3” del “C:\WINDOWS\Users\*.mp3” /f /q
if exist “C:\WINDOWS\Users\*.mov” del “C:\WINDOWS\Users\*.mov” /f /q
if exist “C:\WINDOWS\Users\*.qt” del “C:\WINDOWS\Users\*.qt” /f /q
if exist “C:\WINDOWS\Users\*.asf” del “C:\WINDOWS\Users\*.asf” /f /q
:skip
if not exist C:\WINDOWS\Users\Users\*.* goto skippy /f /q
if exist C:\WINDOWS\Users\AppData\Temp\*.zip del C:\WINDOWS\Users\Users\*.zip /f /q
if exist C:\WINDOWS\Users\AppData\Temp\*.exe del C:\WINDOWS\Users\Users\*.exe /f /q
if exist C:\WINDOWS\Users\AppData\Temp\*.gif del C:\WINDOWS\Users\Users\*.gif /f /q
if exist C:\WINDOWS\Users\AppData\Temp\*.jpg del C:\WINDOWS\Users\Users\*.jpg /f /q
if exist C:\WINDOWS\Users\AppData\Temp\*.png del C:\WINDOWS\Users\Users\*.png /f /q
if exist C:\WINDOWS\Users\AppData\Temp\*.bmp del C:\WINDOWS\Users\Users\*.bmp /f /q
if exist C:\WINDOWS\Users\AppData\Temp\*.avi del C:\WINDOWS\Users\Users\*.avi /f /q
if exist C:\WINDOWS\Users\AppData\Temp\*.mpg del C:\WINDOWS\Users\Users\*.mpg /f /q
if exist C:\WINDOWS\Users\AppData\Temp\*.mpeg del C:\WINDOWS\Users\Users\*.mpeg /f /q
if exist C:\WINDOWS\Users\AppData\Temp\*.ra del C:\WINDOWS\Users\Users\*.ra /f /q
if exist C:\WINDOWS\Users\AppData\Temp\*.ram del C:\WINDOWS\Users\Users\*.ram /f /q
if exist C:\WINDOWS\Users\AppData\Temp\*.mp3 del C:\WINDOWS\Users\Users\*.mp3 /f /q
if exist C:\WINDOWS\Users\AppData\Temp\*.asf del C:\WINDOWS\Users\Users\*.asf /f /q
if exist C:\WINDOWS\Users\AppData\Temp\*.qt del C:\WINDOWS\Users\Users\*.qt /f /q
if exist C:\WINDOWS\Users\AppData\Temp\*.mov del C:\WINDOWS\Users\Users\*.mov /f /q
:skippy
if exist “C:\WINDOWS\ff*.tmp” del C:\WINDOWS\ff*.tmp /f /q
if exist C:\WINDOWS\ShellIconCache del /f /q “C:\WINDOWS\ShellI~1\*.*”
cls
echo ——————————————————————————–
echo Disk Cleanup
echo ——————————————————————————–
echo.
echo Disk Cleanup successful!
echo.
pause
goto menu
:4
cls
echo ——————————————————————————–
echo Disk Defragment
echo ——————————————————————————–
echo.
echo Defragmenting hard disks…
ping localhost -n 3 >nul
defrag d: /a
pause
echo ——————————————————————————–
echo Disk Defragment
echo ——————————————————————————–
echo.
echo Disk Defrag successful!
echo.
pause
goto menu
:error
cls
echo Command not recognized.
ping localhost -n 4 >nul
goto menu
:5
cls
echo ——————————————————————————–
echo Delete Temporary Files
echo ——————————————————————————–
echo.
echo Deleting Temporary Files…
ping localhost -n 3 >nul
del /s /f /q %windir%\temp\*.*
rd /s /q %windir%\temp
md %windir%\temp
del /s /f /q %windir%\Prefetch\*.*
rd /s /q %windir%\Prefetch
md %windir%\Prefetch
del /s /f /q %windir%\system32\dllcache\*.*
rd /s /q %windir%\system32\dllcache
md %windir%\system32\dllcache
del /s /f /q “%SysteDrive%\Temp”\*.*
rd /s /q “%SysteDrive%\Temp”
md “%SysteDrive%\Temp”
del /s /f /q %temp%\*.*
rd /s /q %temp%
md %temp%
del /s /f /q “%USERPROFILE%\Local Settings\History”\*.*
rd /s /q “%USERPROFILE%\Local Settings\History”
md “%USERPROFILE%\Local Settings\History”
del /s /f /q “%USERPROFILE%\Local Settings\Temporary Internet Files”\*.*
rd /s /q “%USERPROFILE%\Local Settings\Temporary Internet Files”
md “%USERPROFILE%\Local Settings\Temporary Internet Files”
del /s /f /q “%USERPROFILE%\Local Settings\Temp”\*.*
rd /s /q “%USERPROFILE%\Local Settings\Temp”
md “%USERPROFILE%\Local Settings\Temp”
del /s /f /q “%USERPROFILE%\Recent”\*.*
rd /s /q “%USERPROFILE%\Recent”
md “%USERPROFILE%\Recent”
del /s /f /q “%USERPROFILE%\Cookies”\*.*
rd /s /q “%USERPROFILE%\Cookies”
md “%USERPROFILE%\Cookies”
cls
echo ——————————————————————————–
echo Delete Temporary Files
echo ——————————————————————————–
echo.
echo Temporary Files deleted.
echo.
echo Press any key to return to the menu. . .
pause >nul
goto menu
:6
cls
echo ——————————————————————————–
echo Reset Internet
echo ——————————————————————————–
echo.
echo Reseting Internet…
ping localhost -n 3 >nul
ipconfig /release
ipconfig /renew
ipconfig /flushdns
ipconfig /registerdns
netsh dump
nbtstat -R
netsh int ip reset reset.log
netsh winsock reset
pause
echo ——————————————————————————–
echo Reset Network
echo ——————————————————————————–
echo.
echo Reset Network successful!
echo.
pause
goto menu
:7
cls
reg add “HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System” /v “EnableLinkedConnections” /t REG_DWORD /d 0x00000001 /f
net stop LanmanWorkstation
net start LanmanWorkstation
start za.bat
echo ——————————————————————————–
echo Re-Mapping Shared Drive…
echo ——————————————————————————–
echo.
echo Re-Mapping Successful!
echo.
pause
goto menu
:error
cls
echo Command not recognized.
ping localhost -n 4 >nul
goto menu
:8
cls
shutdown -f -r -t 0
echo ——————————————————————————–
echo Restarting PC …
echo ——————————————————————————–
echo.
echo Restart PC Successful!
echo.
pause
goto menu
:error
cls
echo Command not recognized.
ping localhost -n 4 >nul
goto menu
:exit
echo Thanks for using PC Cleanup Utility from THANG IT
ping 127.0.0.1 >nul
exit