中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 再发逐字符显示批处理(不兼容^""=字符):
作者:
标题: 再发逐字符显示批处理(不兼容^""=字符): 上一主题 | 下一主题
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『楼 主』:  再发逐字符显示批处理(不兼容^""=字符):


@echo off
:begin
cls&set /p str=请输入字符串:
if "%str%"=="" goto begin
for %%i in (^> ^< ^& ^|) do set a=%%i&call :loop
cls&echo 逐字显示开始...&ping /n 2 127.1>nul
cls&echo.
:lp
set /a n+=1
call,set var="%%str:~,%n%%%"
set /p=%var%<nul&ping /n 127.1>nul
for /l %%i in (1,1,100) do set /p=<nul
if not %var%=="%str%" goto lp
cls&set n=0&echo 显示完毕,按任意键继续!&pause>nul&goto begin
:loop
call,set str=%%str:^%a%=^%a%%%
[ Last edited by zw19750516 on 2008-5-12 at 12:36 AM ]



批处理之家新域名:www.bathome.net
2008-5-11 22:14
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 2 楼』:  

不知楼主是否看过这个帖子
@echo off

:: 逐行逐字阅读文本,并且原样显示文本内容
:: ① 为了显示文本的所有内容,使用了for+findstr的句式
:: ② 为了能原样显示文本,使用变量延迟并在合适的位置终止延迟
:: ③ 为了能正确显示引号和等号,在语句 set /p= !str:~0,1!<nul 中,等号后空一格,并使用退格键

for /f "delims=" %%i in ('findstr /n .* test.txt') do (
  set "str=%%i"
  setlocal enabledelayedexpansion
  set str=!str:*:=!
  call :pickup
  endlocal
)
pause
goto :eof

:pickup
ping -n 1 127.1>nul
if defined str (
  set /p= !str:~0,1!<nul
  set str=!str:~1!
  goto pickup
)
echo.
goto :eof


2008-5-11 23:56
查看资料  发短消息 网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 3 楼』:  

&&回hat兄弟,namejm版主的这贴子我不但看过,还借其写了批处理和文本文件阅读器,但请hat兄弟测试下我稍做修改的下面一段代码吧,就能说明问题:
@echo off
:begin
set var=<< >>> &&& |||
for %%i in (%var%) do (
  set "str=%%i"
  setlocal enabledelayedexpansion
  set str=!str:*:=!
  call :pickup
  endlocal
)
pause
goto :eof
:pickup
ping -n 1 127.1>nul
if defined str (
  set /p= !str:~0,1!<nul
  set str=!str:~1!
  goto pickup
)
echo.
goto begin




批处理之家新域名:www.bathome.net
2008-5-12 00:10
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 4 楼』:  

恕我愚笨,没看明白 zw19750516 兄3楼的代码要表达什么意思。
给你的set命令加个双引号可以吗?

2008-5-12 00:56
查看资料  发短消息 网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 5 楼』:  

我的意思就是这段代码并不兼容输入的字符串中的&<>|四个特殊字符,不知怎么在文本里还行(估计是for+findstr句式的原因)

[ Last edited by zw19750516 on 2008-5-12 at 01:03 AM ]



批处理之家新域名:www.bathome.net
2008-5-12 01:01
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 6 楼』:  

这样是否能否满足要求呢?
@echo off
:begin
rem set var=<< >>> &&& |||
cls
set /p var=请输入字符串:
if "%var%"=="" goto begin
for %%i in ("%var%") do (
  set "str=%%i"
  set "str=%str:~1,-1%"
  setlocal enabledelayedexpansion
  rem set str=!str:*:=!
  call :pickup
  endlocal
)
pause
goto :eof
:pickup
ping -n 1 127.1>nul
if defined str (
  set /p= !str:~0,1!<nul
  set str=!str:~1!
  goto pickup
)
echo.


2008-5-12 01:27
查看资料  发短消息 网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 7 楼』:  

还是请兄弟再测试。。。



批处理之家新域名:www.bathome.net
2008-5-12 02:43
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 8 楼』:  

怎么我测试1楼和3楼的代码都不对呢?
我输入的是=<< >>> &&& |||



致精致简!
2008-5-12 02:45
查看资料  发短消息 网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 9 楼』:  

3楼是肯定会出错的,但1楼的代码在我这里运行很正常啊



批处理之家新域名:www.bathome.net
2008-5-12 02:49
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 10 楼』:  

奇怪,我复制粘贴进去就不行,直接输入就可以。。。



致精致简!
2008-5-12 02:54
查看资料  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 11 楼』:  

这次呢?
@echo off
:begin
rem set var=<< >>> &&& |||
cls
set /p var=请输入字符串:
if "%var%"=="" goto begin
for /f "delims=" %%i in ("%var%") do (
  set "str=%%i"
  setlocal enabledelayedexpansion
  rem set str=!str:*:=!
  call :pickup
  endlocal
)
pause
goto :eof
:pickup
ping -n 1 127.1>nul
if defined str (
  set /p= !str:~0,1!<nul
  set str=!str:~1!
  goto pickup
)
echo.


2008-5-12 02:57
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: