Board logo

标题: [特效代码] [已解决] 请问批处理能逐个字逐个字显示出来的同时,也显示出空格么? [打印本页]

作者: raymai97    时间: 2011-8-12 00:32     标题: [已解决] 请问批处理能逐个字逐个字显示出来的同时,也显示出空格么?

本帖最后由 raymai97 于 2011-8-13 23:56 编辑

如题,如果要实现这个效果不是问题,可以用以下代码:
  1. set text=Hello World
  2. for /l %%i in (0,1,14) do (
  3. set/p=!Text:~%%i,1!<nul
  4. ping -n 2 127.1>nul
  5. )
复制代码
但是会出现问题,就是Hello World会变成HelloWorld
有什么方法可以解决么?
作者: wc726842270    时间: 2011-8-12 02:49

你是什么系统啊
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set text=Hello World
  4. for /l %%i in (0,1,14) do (
  5. set/p=!Text:~%%i,1!<nul
  6. ping -n 2 127.1>nul
  7. )
  8. pause>nul
复制代码
XP SP2
作者: raymai97    时间: 2011-8-12 09:33

回复 2# wc726842270


    Windows 7 旗舰版~ 看,不会显示空格的~
作者: CrLf    时间: 2011-8-12 09:57

win7 下的 set /p 默认会忽略提示语句中的行首空格、制表符,所以要借退格符绕个弯子:
  1. set text=Hello World
  2. for /l %%i in (0,1,14) do (
  3. set/p=@!Text:~%%i,1!<nul
  4. ping -n 2 127.1>nul
  5. )
复制代码

作者: CUer    时间: 2011-8-12 12:22

回复 2# wc726842270


这种代码在Vista和Win7里面都不好使
作者: CUer    时间: 2011-8-12 12:22

回复 4# CrLf


最后会多出一个@
作者: CUer    时间: 2011-8-12 12:22

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set text=Hello World
  4. for /l %%i in (0,1,14) do (
  5.     set /p =@ !Text:~%%i,1!<nul
  6.     ping -n 1 127.1>nul
  7. )
复制代码

作者: CUer    时间: 2011-8-12 12:24

还有,把变量赋值放在前面好一些:
  1. @echo off
  2. set text=Hello World!
  3. setlocal enabledelayedexpansion
  4. for /l %%i in (0,1,14) do (
  5.     set /p =@ !Text:~%%i,1!<nul
  6.     ping -n 1 127.1>nul
  7. )
复制代码

作者: raymai97    时间: 2011-8-13 14:59

回复 8# CUer


    成功了!非常感谢你的帮助!!




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2