-2

そのため、以前に、バッチ ファイルで角かっこ内に入力できるようにしたいという質問をしましたが、q への回答は不可能でした。それだけでなく、さらにフィードバックが必要です。しかし、ここでやりたいことは、「127.0.0.1」と入力して[Eneter] idを押すのではなく、IPアドレスを入力することです。「127.0.0.1」と入力すると、バッチファイルで続行されます

これを行う良い方法を知っている人はいますか?

4

2 に答える 2

2

このサイトでは: http://www.dostips.com/forum/viewtopic.php?f=3&t=3428 GetKey.exe補助プログラムが記述されています。Enterこのプログラムはキーを読み取り、すぐに ERRORLEVEL を介してその Ascii コードを返すため、続行するためにキーは必要ありません。同じサイトに :ReadLine.bat サンプル プログラムが示されています。Show.exe (別の補助プログラム) を使用SET /Pしてコマンドをエミュレートします。つまり、最後に入力した文字をキーで削除し、入力をキーで終了します。特定のニーズに合わせて :ReadLine サブルーチンを変更できます。この機能のいくつかの例を示します。BackSpaceEnter

たとえば、以下のサブルーチンは :ReadLine の修正版で、10 進数と小数点を読み取るだけで、9 文字 (「127.0.0.1」など) を読み取った後に「自動的に」続行します。

:Read9DigitsAndPoints var=["prompt"]
set Point=46
set Slash=47
rem set Digit_0=48
set Digit_9=57
set %1=
set len=0
if "%~2" neq "" Show %~2
:nextKey
   GetKey
   set key=%errorlevel%
   if %key% geq %Space% (
      rem Ascii character: ignore characters that are not digits nor points
      if %key% lss %Point% goto nextKey
      if %key% gtr %Digit_9% goto nextKey
      if %key% equ %Slash% goto nextKey
      Show %key%
      for /F "delims=" %%a in ('Show %key%') do set "%1=!%1!%%a"
      set /A len+=1
   ) else if %key% equ %BackSpace% (
      if defined %1 (
         Show %BackSpace% %Space% %BackSpace%
         set "%1=!%1:~0,-1!"
         set /A len-=1
      ) else (
         Show %Bell%
      )
   )
if %len% neq 9 goto nextKey
echo/
exit /B

このサブルーチンをさらに変更して、適切な形式の IP アドレス (つまり、3 つのポイントで区切られた 4 つのグループの数字) を読み取ることができるため、ユーザーが必要に応じて IP を入力した後もルーチンが続行されます。ところで、ルーティーンをいつ続けてほしいか知っていますか? 3 点目以降の 1 桁目を読み取った後は?

アントニオ

于 2013-03-24T10:35:52.017 に答える
1

入力しようとしている IP アドレスを特定するには、何らかの方法でバッチを提供する必要があります。入力の終わりを指定する明確な文字が必要です。そうしないと、cmd は入力がどこで終了するかを知ることができません。j__m のコメントで正当に指摘されているように、127.0.0.10 を入力しようとしている場合、0 を入力する前に 127.0.0.1 を入力したとは思わないでしょうか? 一般に、コンピューターに何かをさせる方法があるかどうかを尋ねる前に、常に自分にそれを行う方法があるかどうかを尋ねます。最後に入力がない場合、入力がどこで終了するかがわからない場合は、コンピューターの方がうまくいくとは思えませんコンピューターは単なる機械であり、指示されたとおりに実行します。

于 2013-03-24T09:57:29.037 に答える