2013-03-02 36 views

Trả lời

17

Sử dụng netsh.exe. Một rất đơn giản tập tin batch để nhận một đối số cổng:

@echo off 
rem -- open port (first argument passed to batch script) 
netsh advfirewall firewall add rule name="Open Port %1" dir=in action=allow protocol=TCP localport=%1 
+2

Lưu ý rằng quá trình khởi chạy netsh (hoặc bất kỳ khởi chạy netsh, chẳng hạn như tệp lô) cần quản trị viên để thực hiện ngoại lệ cổng. Trình cài đặt của bạn thường có thể xử lý việc này tại thời điểm cài đặt tùy thuộc vào trình cài đặt có đang chạy với quản trị viên hay không. –

7

Đây là một phần mở rộng của giải pháp được cung cấp bởi @Kevin Richardson. Lưu ý rằng lệnh "netsh advfirewall add rule" sẽ tạo một quy tắc mới có cùng tên mỗi lần bạn chạy cùng một lệnh. Tập lệnh dưới đây giúp ngăn chặn nó

ECHO OFF 
set PORT=8081 
set RULE_NAME="Open Port %PORT%" 

netsh advfirewall firewall show rule name=%RULE_NAME% >nul 
if not ERRORLEVEL 1 (
    rem Rule %RULE_NAME% already exists. 
    echo Hey, you already got a out rule by that name, you cannot put another one in! 
) else (
    echo Rule %RULE_NAME% does not exist. Creating... 
    netsh advfirewall firewall add rule name=%RULE_NAME% dir=in action=allow protocol=TCP localport=%PORT% 
) 
+0

Tôi đã thử giải pháp của bạn (nhưng thay thế% RULENAME% bằng% RULE_NAME% thành tiếng vang ...) và nó hoạt động như mong đợi, cảm ơn! –

+0

Cảm ơn điều này rất hữu ích – wishman

Các vấn đề liên quan