如何确保我从批处理文件中获取正确的数字?

时间:2017-07-05 12:38:00

标签: batch-file

我正在编写一个简单的批处理文件,使用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. . .

任何提示?

0 个答案:

没有答案