找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 28417|回复: 12

批处理变量截取、变量延迟及特殊符号的一个高级综合应用实例

[复制链接]
发表于 2008-10-24 18:38:44 | 显示全部楼层 |阅读模式
新手以读懂此代码为目标吧
  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
复制代码
 楼主| 发表于 2008-10-24 18:44:20 | 显示全部楼层
为便于解读,将其写成“常规”形式(先独立思考哈,实在想不明白再看此提示)
@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 编辑 ]
发表于 2008-10-24 19:42:01 | 显示全部楼层
真够牛,用"/","?"之类的特殊符号来做变量,看得头都晕了.
 楼主| 发表于 2008-10-26 00:52:04 | 显示全部楼层
up

是不是应该放到教学区比较好?
发表于 2009-2-16 10:24:29 | 显示全部楼层

回复 5楼 的帖子

看不到什么?
发表于 2009-11-6 17:29:54 | 显示全部楼层
为什么2楼是一片空白?
发表于 2009-11-6 20:52:20 | 显示全部楼层

回复 7楼 的帖子

是 隐形 的答案-----------
鼠标放在 代码 区拖动 即可看到----
发表于 2015-11-11 11:14:00 | 显示全部楼层
本文看了谢谢了,在我的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
新手希望多指点
发表于 2022-11-22 07:08:25 | 显示全部楼层
感谢分享,谢谢!!!
发表于 2022-11-28 13:12:43 | 显示全部楼层
本帖最后由 tiantiandao 于 2022-11-28 13:49 编辑

感谢分享
谢谢
发表于 2023-6-30 08:02:33 | 显示全部楼层
这就有点复杂 了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 04:04 , Processed in 0.020214 second(s), 7 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表