我正在编写一个简单的批处理文件,使用NETSH将流量从端口55555重定向到文件中前15个字符后面的数字中定义的端口。
回显消息是我的母语(这就是为什么我必须使用chcp 1252):
@echo off
chcp 1252 > nul
:start
IF EXIST %LocalAppData%\Torifier\ctrl_port (
SET /p CTRLIP=<%LocalAppData%\Torifier\ctrl_port > nul
SET /a CTRLPORT=%CTRLIP:~15% - 1 > nul
IF CTRLPORT GTR 0 (
SET "var="&for /f "delims=0123456789" %%i in ("%CTRLPORT%") do set
var=%%i
IF DEFINED var (
echo Erro na definição da porta...
GOTO :error
) ELSE (
echo Porta de controle definida como %CTRLPORT%. Continuando...
GOTO :confirmed)
) ELSE (GOTO :error)
) ELSE (
:error
EVENTCREATE /T WARNING /L APPLICATION /so Forwardnetsh /ID 100 /D
"Torifier ainda não se conectou – :(." > nul
echo Torifier provavelmente ainda não se conectou. Aguardando...
timeout /t 10 /nobreak > NUL
echo Tentando novamente...
goto :start
)
:confirmed
echo Redirecionando todo tráfego local da porta 55555 para a porta
%CTRLPORT%.
@rem netsh interface portproxy add v4tov4 listenport=55555
listenaddress=127.0.0.1 connectport=%CTRLPORT% connectaddress=127.0.0.1
IF %ERRORLEVEL% NEQ 0 GOTO error
EVENTCREATE /T INFORMATION /L APPLICATION /so Forwardnetsh /ID 100 /D "A
porta do Torifier foi redirecionada para 55555 com sucesso!" > nul
echo A porta %CTRLPORT% foi redirecionada para 55555 com sucesso!
pause
它设置为在启动时加载,但每次启动时都会将-17
记录到%CTRLPORT%
,这显然不是正确的端口。
首先我尝试检查它是否是一个数字。然后我尝试添加IF CTRLPORT GTR 0
子句,但两种解决方案都不起作用。
通常的输出是:
Porta de controle definida como . Continuando...
Redirecionando todo tráfego local da porta 55555 para a porta -17.
A porta -17 foi redirecionada para 55555 com sucesso!
Pressione qualquer tecla para continuar. . .
任何提示?