Gọi file BAT (Batch File) không hiện cửa sổ command prompt window

Trước tôi hay dùng Task Scheduler để gọi các Batch file, tuy nhiên khi đó cửa sổ command prompt hiện ra rất khó chịu. Dưới đây là cách để chạy file BAT mà không hiện cửa sổ này ra.

Sử dụng VBScript

Phương pháp này không cần dùng phần mềm nào bên ngoài.

Đoạn mã VBS quietrun.vbs dưới đây sử dụng API Run của WScript.Shell gọi chạy một application từ dòng lệnh mà không hiện cửa sổ nhờ thiết lập tham số thứ 2 của hàm này là giá trị 0.

If WScript.Arguments.Count >= 1 Then
    ReDim Args(WScript.Arguments.Count - 1)
    For i = 0 To WScript.Arguments.Count - 1
        Arg = WScript.Arguments(i)
        If InStr(Arg, " ") > 0 Then Arg = """" & Arg & """"
        Args(i) = Arg
    Next
    CreateObject("Wscript.Shell").Run Join(Args), 0, True
End If

Gọi chạy script thông qua lệnh cscript.exe (Windows Script Host) cùng tham số //Nologo để không hiện banner (tên, copyright và phiên bản của lệnh cscript) khi chạy.

cscript.exe //Nologo quietrun.vbs "C:\Batch Files\test.bat"

Sử dụng chp (Create Hidden Process)

CHP là một lệnh được viết bằng C++ sử dụng Win32 API là CreateProcess để ẩn giấu GUI của các phần mềm chạy trên Windows.

Đây là hành vi tương tự một malware nên chp bị Windows Defender đánh giá là một PUA:Win32/Presenoker dù mã nguồn đâu đó chỉ 80 dòng code và chẳng làm gì nên tội.

Bạn có thể tải file chạy chp.exe và mã nguồn của nó tại http://www.commandline.co.uk/chp/. Lưu ý cấu hình Windows Defender cho phép phần mềm này chạy nhé (chọn Allow on device).

Windows Defender cho rằng chp là một malware nguy cơ thấp

Để sử dụng chp gọi file BAT mà không hiện cửa sổ Command Prompt, ta gọi lệnh như sau:

chp.exe cmd.exe /c "C:\Batch Files\test.bat"

Sử dụng NirCmd

NirCmd có tham số exec hide để mở application mà không hiện cửa sổ. Lệnh được thực hiện như sau:

nircmd.exe exec hide "C:\Batch Files\test.bat"

Sử dụng SilentCMD

SilentCMD chạy file BAT không hiện cửa sổ command prompt và có khả năng redirect đầu ra output vào file. Phần mềm này yêu cầu .NET Framework 3.5 được cài đặt.

Sử dụng SilentCMD như sau:

SilentCMD.exe "C:\Batch Files\test.bat"