ねえ、私は再びここにいます。今回は、IPアドレスの入力用の入力変数から括弧の間に入力する方法を知りたいです。
コードを次のようにしたいと思います。
set input=
set /p input=IP Address: [ ].[ ].[ ].[ ]
バッチを実行してIPを入力したら、次のように表示します。
IP Address: [ 127 ].[ 0 ].[ 0 ].[ 1 ]
とにかくこれを行う方法はありますか?
ねえ、私は再びここにいます。今回は、IPアドレスの入力用の入力変数から括弧の間に入力する方法を知りたいです。
コードを次のようにしたいと思います。
set input=
set /p input=IP Address: [ ].[ ].[ ].[ ]
バッチを実行してIPを入力したら、次のように表示します。
IP Address: [ 127 ].[ 0 ].[ 0 ].[ 1 ]
とにかくこれを行う方法はありますか?
これは非常に複雑な作業になると思います。
Batch でこれを行おうとする場合は、ユーザーがキーボードを叩くたびに中かっこで行を書き直す必要があります。これまでのところ、単一の KB ヒットをリッスンする唯一のコマンドは Choice コマンドです。KBヒットごとにユーザー入力を繰り返すように管理する場合は、バッチファイルをバックスペース文字でバイトハックし、ユーザー入力と中括弧を組み合わせるロジックを用意する必要があります。これは非常に不快であるだけでなく、非常に遅くなります。
ユーザーに任意の文字列を入力させ、その後「正規表現」でチェックすることをお勧めします (Windows の正規表現はあまり良くありません)。
これは、プリンターのIPを確認するために使用する関数の例です。
%printer% は、ユーザーが入力する文字列です。この関数には nslookup 関数もあります。必要に応じて、これを省略できます。この 2 行目はすべての魔法を行いますが、321.099.000.666 のように入力できない IP を入力することもできます。
:CheckIP
echo %printer% | findstr /R "[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*">nul || goto :EOF
FOR /F "tokens=* delims=" %%A in ('nslookup %printer% 2^>^&1 ') do (
echo %%A | findstr /R /C:"Name: ">nul && set printer=%%A
echo %%A | findstr /R /C:"\*\*\*">nul && (set printerfqdn=%printer% & goto printerip)
)
rem ***************************************
rem * Name: printername.location.companydomain
rem * printerfqdn begins at position 10
rem ***************************************
set printer=%printer:~9%
goto :EOF