[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] [已解决]批处理如何实现文本逐字原样输出?

今天听歌后来兴趣了,想逐字显示歌词,但是还是玩出来毛病了。各位,该出手了,看我哪里错了,错了多少,别留着您的良言。文件代码:b.txt:
                车继玲 最远的你是我最近的爱#
       夜以沉默 心事向谁说#
        不肯回头 所有的爱多错过#
        别笑我懦弱#
        我始终不能猜透#
        为何人生淡漠#
        风雨之后 无所谓拥有#
         萍水相逢 你却给我那么多#
        你挡住寒冬 温暖只保留给我#
        风霜寂寞 凋落在你的怀中#
        人生风景在游走#
       每当孤独我回首#
        你的爱总在不远的地方等着我#下面是代码:
  1. @echo off & setlocal EnableDelayedExpansion
  2. for /f "delims=," %%i in (b.txt) do (
  3.         set /a "num+=1"
  4.         set "wind!num!=%%i"
  5.         rem 把文本的值赋给wind!num!
  6.         )for /l %%j in (1,1,!num!) do (
  7.         rem 把每一行的值都赋给a
  8.         set "a=!wind%%j!" && for /l %%k in (1,1,15) do (
  9.         rem 开始逐字显示
  10.         set "b=!a:~%%k,1!"
  11.         set/p=!a:~%%k,1!nul
  12.         )
  13. )echo/pause>nul
复制代码
我这先谢谢各位了。^__^
答案:5楼正解

[ 本帖最后由 wgoxm521 于 2010-2-7 11:47 编辑 ]
1

评分人数

    • Batcher: 感谢主动给标题标注[已解决]字样PB + 2

标题:此双线程批处理,怎么实现按任意退出

原帖由 batman 于 2010-1-20 17:53 发表
跟风,原来写的:@echo off&color 1f&mode con lines=5
if defined flag goto next
set "flag=a"
start /b %~nx0
title 按任意键退出
set "str=只是为何当初你是不听所有纷纷扰扰满天流言漫天风雨你会选择了我? ...

曾在QQ请教于Batman,可能因为batman太忙,没注意到。

TOP

感谢8楼指点

呵呵,谢谢楼主指点,感动中....

TOP

在屏幕上显示时,最好用(空格后面加退格符)
set /p= !b!<nul
可以兼容等号和引号

如果要输出到文件,且要兼容特殊字符,则应该考虑用vbs
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

跟风,原来写的:
  1. @echo off&color 1f&mode con lines=5
  2. if defined flag goto next
  3. set "flag=a"
  4. start /b %~nx0
  5. title 按任意键退出
  6. set "str=只是为何当初你是不听所有纷纷扰扰满天流言漫天风雨你会选择了我?只是为何如今我们不顾一切追求真爱坚持到底苦尽甘来你会放弃了我?再说你也不会懂,心再痛你能做什么,只有把自己深锁,错了又错。。。"
  7. for /l %%i in (1,1,40) do call,set "kong=%%kong%% "
  8. :again
  9. set "a=%kong%%str%"
  10. :lp
  11. cls&echo.&echo.
  12. set /p=%a:~,40%<nul&set "a=%a:~1%"
  13. for /l %%i in (1,1,1000) do echo>nul
  14. if defined a goto lp
  15. goto again
  16. :next
  17. pause>nul
  18. taskkill /f /fi "windowtitle eq 按任意键退出*" /im "cmd.exe">nul 2>nul
  19. exit
复制代码
***共同提高***

TOP

回复 5楼 的帖子

哦。谢谢。
我知道了,以后会注意的。

[ 本帖最后由 wgoxm521 于 2010-1-21 18:22 编辑 ]

TOP

  1. @echo off & setlocal EnableDelayedExpansion
  2. for /f "delims=," %%i in (b.txt) do (
  3.     set /a "num+=1"
  4.     set "wind!num!=%%i"
  5.     rem 把文本的值赋给wind!num!
  6. )
  7. for /l %%j in (1,1,!num!) do (
  8.     rem 把每一行的值都赋给a
  9.     set "a=!wind%%j!"
  10.     for /l %%k in (0,1,15) do (
  11.         rem 开始逐字显示
  12.     set "b=!a:~%%k,1!"
  13.         if "!b!" equ "#" (echo/) else set/p=!b!<nul
  14.         rem 换行
  15.     ping -n 1 -w 1 127.1>nul
  16.     )
  17. )
  18. pause>nul
复制代码
以后描述问题一次性描述清楚,不要跟帖补充问题。

为了节省论坛空间,还是把图片删除了吧。你用语言可以描述清楚的。
(*^_^*)

TOP

  1. @echo off & setlocal EnableDelayedExpansion
  2. for /f "delims=," %%i in (b.txt) do (
  3.         set /a "num+=1"
  4.         set "wind!num!=%%i"
  5.         rem 把文本的值赋给wind!num!
  6.         )
  7. for /l %%j in (1,1,!num!) do (
  8.         rem 把每一行的值都赋给a
  9.         set "a=!wind%%j!" && for /l %%k in (0,1,15) do (
  10.         rem 开始逐字显示
  11.     set "b=!a:~%%k,1!"
  12.         set/p=!a:~%%k,1!<nul
  13.         if "!b!" equ "#" echo.
  14.         rem 换行
  15.         ping -n 1 127.1>nul
  16.         )
  17. )
  18. echo/
  19. pause>nul
复制代码
(*^_^*)

TOP

谢谢

Batcher 真是负责,太感动了。才发了几分钟的贴,就回复了。
^_^

TOP

参考:批处理最大限度原样输出含特殊字符的指定行内容
http://www.bathome.net/thread-4580-1-1.html
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表