使用批处理文件而无需在每个输入处按Enter键

时间:2013-03-24 05:35:59

标签: windows batch-file cmd ip-address user-input

所以我之前问了一个问题,我希望能够在批处理文件中的括号内输入,我的q的答案是不可能的。所以我需要一些更多的反馈。但我现在想要做的就是当我输入一个IP地址,而不是输入“127.0.0.1”,然后再按[Eneter] id,而不是当我输入“127.0.0.1”时它只在批处理文件中继续

任何人都知道这样做的好方法吗?

2 个答案:

答案 0 :(得分:2)

在此站点:描述了http://www.dostips.com/forum/viewtopic.php?f=3&t=3428 GetKey.exe 辅助程序。该程序读取一个键并立即通过ERRORLEVEL返回其Ascii代码,因此它不需要 Enter 键继续。在同一站点:显示ReadLine.bat示例程序;它借助 Show.exe (另一个辅助程序)模拟SET /P命令,即 BackSpace 键删除最后输入的字符并输入键终止输入。您可以修改:ReadLine子程序以满足特定需要,并显示此功能的几个示例。

例如,下面的子程序是以下的修改版本:ReadLine只读取十进制数字和点数,并在读取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个点分隔的四组数字),因此例程在用户输入IP后继续。一段时间,知道你希望例程在什么时候继续?读完第三点后的第一个数字?

安东尼奥

答案 1 :(得分:1)

您必须以某种方式提供批量确定 是您要输入的IP地址。应该有一个明确的字符指定输入的结尾,否则cmd就不能在输入结束的地方knwo。正如你在j__m的评论中正确地指出的那样,如果你想输入127.0.0.10,那么在你设法输入0之前你不会认为你输入了127.0.0.1吗?总的来说,在询问是否有办法让计算机做某事之前,总是问你自己是否有办法做到这一点。如果无法判断输入在哪里结束,如果最后没有输入,我怀疑计算机会做得更好。计算机只是一台机器,它可以完成你所说的。