Windows 7命令提示符批量屏幕模拟键入

Windows 7命令提示符批量屏幕模拟键入,windows,batch-file,command-prompt,Windows,Batch File,Command Prompt,我目前正在尝试处理一个批处理文件,该文件打开一个命令提示符,一旦打开命令提示符开始模拟键入,下面是我到目前为止所做的 编码: @echo关闭 setlocal 对于%%i in(H e l o H o w A r e y o u)do( 设置/p“=%%i”nul ) 回声; 后藤:EOF 我的问题是,我只能做一个单词,当我启动命令提示符时,它就会开始输入它,就像这样,你好吗 我需要将文字分开,我能做些什么吗? 哦,我也在Windows 7上从Gist复制我的示例:因为OP无法访问GitHu

我目前正在尝试处理一个批处理文件,该文件打开一个命令提示符,一旦打开命令提示符开始模拟键入,下面是我到目前为止所做的 编码:

@echo关闭
setlocal
对于%%i in(H e l o H o w A r e y o u)do(
设置/p“=%%i”nul
) 
回声;
后藤:EOF
我的问题是,我只能做一个单词,当我启动命令提示符时,它就会开始输入它,就像这样,你好吗 我需要将文字分开,我能做些什么吗?
哦,我也在Windows 7上

从Gist复制我的示例:因为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
@echo关闭
呼叫:键入“你好,世界!”
退出/b0
::使用已知的无效保留IP地址,因为它应该始终超时。
:: http://en.wikipedia.org/wiki/Reserved_IP_addresses
::127.0.0.1将永远不会超时,并始终在1秒内返回每个刻度。
:打字
setlocal
设置“消息=%~1”
:打字循环
ping 192.0.2.0-N1-W500>nul

如果“%Message:~1,1%”==“”(这在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
@echo关闭
setlocal
对于%%i in(H e l o“H o w”A r e“y o u)do(
设置/p“=%%~i”数值
) 
回声;
后藤:EOF

但是,在较新的Windows版本中,
set/p
命令会消除前导空格,因此如果此方法在Windows 7中有效,我不是舒尔。

只添加空格如何?
set/p“=%%I”我把我的编码搞砸了,让我很快修复它,我尝试了你的建议,虽然它添加了空格,但它只是让单词出现,它不会单独处理字母,如果我添加空格,比如(HE l l o H w a r y o u)它也会将字母隔开。例如:@DavidRuhmann SSL error,谷歌无法验证该网站是否安全,因此它不会让我访问该网站,因为它可能重复了
@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