【问题标题】:Using batch file without having to press enter at each input使用批处理文件,无需在每次输入时按 Enter
【发布时间】:2013-03-13 19:08:07
【问题描述】:

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

有人知道这样做的好方法吗?

【问题讨论】:

  • ...如果用户尝试输入 127.0.0.10 怎么办?
  • IMO 你必须编写自己的输入解析器(在 C/Pascal/Basic 中......无论如何)来实现这一点。

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


【解决方案1】:

在本站:http://www.dostips.com/forum/viewtopic.php?f=3&t=3428GetKey.exe 辅助程序说明。该程序读取一个密钥并立即通过 ERRORLEVEL 返回其 Ascii 代码,因此不需要 Enter 键即可继续。在同一站点:ReadLine.bat 示例程序显示;它借助Show.exe(另一个辅助程序)模拟SET /P命令,即BackSpace键删除最后输入的字符并Enter kbd> 键终止输入。您可以修改 :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 后程序继续执行。到此为止,是否知道您希望例行程序在什么时候继续?读完第三个点后的第一个数字?

安东尼奥

【讨论】:

    【解决方案2】:

    您必须提供批处理某种方法来确定什么是您尝试输入的 IP 地址。应该有一个不同的字符来指定输入的结束,否则 cmd 就无法知道输入将在哪里结束。正如 j__m 在评论中正确指出的那样,如果您尝试输入 127.0.0.10 ,那么在您设法输入 0 之前,您不会认为您已经输入了 127.0.0.1 对吗?一般来说,在问有没有办法让计算机做某事之前,总是问你自己有没有办法做到这一点。如果 无法判断输入在哪里结束,如果最后没有输入,我怀疑计算机会做得更好。计算机只是一台机器,它会按照您的指示进行操作。

    【讨论】:

      猜你喜欢
      • 2013-10-23
      • 2016-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多