【问题标题】:Windows 7 command prompt batch onscreen simulated typingWindows 7 命令提示符批处理屏幕模拟输入
【发布时间】:2015-03-02 17:42:57
【问题描述】:

我目前正在尝试处理一个打开命令提示符的批处理文件,一旦打开命令提示符就开始模拟输入,这是我目前所拥有的 编码:

@echo off 
setlocal 
for %%i in (H e l l o  H o w  A r e  y o u) do ( 
    set /p "=%%i"<nul 
    ping 169.254.0.0 -n 1 -w 500 >nul 
) 
echo; 
goto :EOF

我的问题是,我只能做一个词,当我启动命令提示符时它开始输入它,就像这样 HelloHowAreYou 我需要将单词分开,有什么办法吗? 哦,我也在 Windows 7 上

【问题讨论】:

  • 加个空格怎么样? set /p "=%%i "&lt;nul
  • 我搞砸了我的编码,让我快速修复它,我尝试了你的建议,虽然它增加了空格,但它只是让单词出现,它不会单独处理字母,如果我添加诸如 (H e l l o h o w a r e y o u) 之类的空格,它也会将字母隔开。
  • @DavidRuhmann SSL 错误,谷歌无法验证该网站是否安全,所以它不会让我去它

标签: windows batch-file command-prompt


【解决方案1】:

从 Gist 复制我的示例:https://gist.github.com/davidruhmann/6073962,因为 OP 无法访问 GitHub.com

@echo off
call :Typing "hello world!"
exit /b 0

:: Use a known invalid reserved IP address because it should always timeout.
:: http://en.wikipedia.org/wiki/Reserved_IP_addresses
:: 127.0.0.1 will never timeout and will always return each tick in 1 second.
:Typing <Message>
setlocal
set "Message=%~1"
:TypingLoop
ping 192.0.2.0 -n 1 -w 500 >nul
if "%Message:~1,1%"==" " ( <nul set /p "=%Message:~0,2%" ) else ( <nul set /p "=%Message:~0,1%" )
set "Message=%Message:~1%"
if defined Message goto TypingLoop
endlocal
exit /b 0

【讨论】:

    【解决方案2】:

    这适用于 Windows-XP:

    @echo off 
    setlocal 
    for %%i in (H e l l o " " H o w " " A r e " " y o u) do ( 
        set /p "=%%~i"<nul 
        ping 169.254.0.0 -n 1 -w 500 >nul 
    ) 
    echo; 
    goto :EOF
    

    但是,在较新的 Windows 版本中,set /P 命令消除了前导空格,因此我不确定此方法是否适用于 Windows 7。

    【讨论】:

      猜你喜欢
      • 2012-08-30
      • 1970-01-01
      • 2012-09-05
      • 1970-01-01
      • 2011-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-05
      相关资源
      最近更新 更多