对于我目前正在处理的程序,我正在使用一个值,这是ip:port格式的代理,我需要能够将ip和端口拆分为不同的变量,以便需要ip的不同程序端口分离将能够工作。该程序基本上是一个针对我的世界的自动ip /代理切换器,仅仅出于游戏原因,除了实际更改代理的部分之外,我的所有代码都工作。我没有收到任何错误消息,只是我实际上并不知道要写什么代码。无论如何,这是我的代码。
@echo off
color b
title minecraft proxy switcher
set nLine=0
echo input full path to text file containing proxies
set /P "filepath=>"
echo end >> %filepath%
:top
cls
set /A nLine=%nLine%+1
echo now at proxy number %nLine%
CALL :ReadNthLine "%filepath%" %nLine%
PAUSE >NUL & goto:top
GOTO :EOF
::***************************************************************************************
:ReadNthLine File nLine
FOR /F %%A IN ('^<"%~1" FIND /C /V ""') DO IF %2 GTR %%A (ECHO Error: No such line %2. 1>&2 & EXIT /b 1)
FOR /F "tokens=1* delims=]" %%A IN ('^<"%~1" FIND /N /V "" ^| FINDSTR /B /C:"[%2]"') DO set http_proxy=%%B
goto finish
::***************************************************************************************
:finish
if %http_proxy%==end (
cls
echo all proxies have been used
echo will return to top of list in 5 seconds
TIMEOUT /T 5 /NOBREAK
set nLine=0
goto top
)
java -DsocksProxyHost=ip -DsocksProxyPort=port -Xmx800m -jar MinecraftLauncher.exe
echo New ip is %http_proxy%
echo waiting for user input
echo press any key for a new ip
pause
goto top
非常感谢任何帮助,如果您发现我的代码中写得不好或不正确的其他内容请告诉我。
答案 0 :(得分:2)
使用适当的令牌和分隔符将字符串与for
分开:
set "line=192.168.1.1:8080"
for /f "tokens=1,2 delims=:" %%a in ("%line%") do (
set server=%%a
set port=%%b
)
echo Server %server% Port %port%
这是一个基本的代码框架,它一行一行地处理文件(你的方式有效,但这更容易):
@echo off
set /p "filepath=File: "
:top
set n=0
for /f "tokens=1,2 delims=:" %%a in (%filepath%) do call :process %%a %%b
timeout 5
goto :top
:process
echo trying %n%
set /a n+=1
echo host: %1
echo port: %2
pause
goto :eof