2016-09-16 5 views
2

私が現在取り組んでいるプログラムでは、ip:port形式のプロキシである値をとっています.IPとポートを分割する必要があります異なる変数を使用することで、ipとportを別々のプログラムで動作させることができます。プログラムは、基本的には、ゲームの理由だけで、私はすべてのコードを実際にプロキシを変更した部分を除いて動作しているため、ミニクラフトのための自動化されたIP /プロキシの切り替えです。エラーメッセージが表示されず、実際にはどのコードを記述するのかわからないだけです。とにかく、ここに私のコードです。バッチを使用してip:port形式でipとportを分割する

@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

入力ファイルがどのように見えるのかわかりますので、ファイルから解析する内容を知ることができます。 – Squashman

+0

入力ファイルは、ip:port形式のプロキシサーバーの一覧です(例:127.0.0.1:80 192.168.1.1:8080など)。 –

答えて

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 
関連する問題