|
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 |
|
|
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 |
|
|
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 |
|
|
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
状态 离线
|
|
2008-5-12 02:43 |
|
|
26933062
银牌会员
积分 2268
发帖 879
注册 2006-12-19
状态 离线
|
『第
8 楼』:
怎么我测试1楼和3楼的代码都不对呢?
我输入的是=<< >>> &&& |||
|
致精致简! |
|
2008-5-12 02:45 |
|
|
bat-zw
金牌会员
永远的学习者
积分 3105
发帖 1276
注册 2008-3-8
状态 离线
|
|
2008-5-12 02:49 |
|
|
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 |
|