Board logo

标题: 批处理变量截取、变量延迟及特殊符号的一个高级综合应用实例 [打印本页]

作者: zqz0012005    时间: 2008-10-24 18:38     标题: 批处理变量截取、变量延迟及特殊符号的一个高级综合应用实例

新手以读懂此代码为目标吧
  1. @color 0a&set,=0123456&set/=青天有月来几时 我今停杯一问之 人攀明月不可得 月行却与人相随
  2. @for /l,%%a,in,(1,1,28)do,@set/a?=1/(6/\)2>nul||(set\=0&echo\&echo\&call,call,set/=%%%%/:~%%]%%%%%%&set]=8)&call,call,call,set/p= %%%%%%%%/:~%%%%,:~%%\%%,1%%%%,1%%%%%%%%<nul&set/a\+=1&ping/n 2 127.1>nul
复制代码

作者: zqz0012005    时间: 2008-10-24 18:44

为便于解读,将其写成“常规”形式(先独立思考哈,实在想不明白再看此提示)
@echo off
color 0a
set ,=0123456
set /=青天有月来几时 我今停杯一问之 人攀明月不可得 月行却与人相随
for /l %%a in (1,1,28)do (
    set /a ?=1/(6/\^) 2>nul || (
        set \=0
        echo\&echo\
        call call set /=%%%%/:~%%]%%%%%%
        set ]=8
    )
    call call call set /p= %%%%%%%%/:~%%%%,:~%%\%%,1%%%%,1%%%%%%%%<nul
    set /a \+=1
    ping /n 1 127.1>nul
)
echo.&echo.&echo.&pause
如果不习惯用特殊字符作变量名,换成容易看的名字
@echo off
color 0a
set num=0123456
set str=青天有月来几时 我今停杯一问之 人攀明月不可得 月行却与人相随
for /l %%a in (1,1,28)do (
    set /a flag=1/(6/counter^) 2>nul || (
        set counter=0
        echo.&echo.
        call call set str=%%%%str:~%%n%%%%%%
        set n=8
    )
    call call call set /p= %%%%%%%%str:~%%%%num:~%%counter%%,1%%%%,1%%%%%%%%<nul
    set /a counter+=1
    ping /n 1 127.1>nul
)
echo.&echo.&echo.&pause

[ 本帖最后由 zqz0012005 于 2008-10-26 01:15 编辑 ]
作者: qq641255849    时间: 2008-10-24 19:42

真够牛,用"/","?"之类的特殊符号来做变量,看得头都晕了.
作者: zqz0012005    时间: 2008-10-26 00:52

up

是不是应该放到教学区比较好?
作者: Batcher    时间: 2009-2-16 10:24     标题: 回复 5楼 的帖子

看不到什么?
作者: 5566ljlj    时间: 2009-11-6 17:29

为什么2楼是一片空白?
作者: vsbat    时间: 2009-11-6 20:52     标题: 回复 7楼 的帖子

是 隐形 的答案-----------
鼠标放在 代码 区拖动 即可看到----
作者: kakalongyan    时间: 2015-11-11 11:14

本文看了谢谢了,在我的IBAT上echo.echo是提示错误的。所以改了一下可以跑了。
set num=0123456
set str=青天有月来几时 我今停杯一问之 人攀明月不可得 月行却与人相随
for /l %%a in (1,1,28)do (
    set /a flag=1/(6/counter^) 2>nul || (
        set counter=0
        set n=8
        set #=^   #这个主要是输出一个空格
        echo %#%   
        call call set str=%%%%str:~%%n%%%%%%        
)
call call call set /p= %%%%%%%%str:~%%%%num:~%%counter%%,1%%%%,1%%%%%%%%<nul
    set /a counter+=1
)

pause
新手希望多指点
作者: ANSL    时间: 2022-11-22 07:08

感谢分享,谢谢!!!
作者: tiantiandao    时间: 2022-11-28 13:12

本帖最后由 tiantiandao 于 2022-11-28 13:49 编辑

感谢分享
谢谢
作者: zxlagyyy    时间: 2023-6-30 08:02

这就有点复杂 了。




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