![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-07 12:11 |
共 48,040 主题排行 / 350,125 发帖 / 今日 0 篇 / 48,252 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 请教 shift 命令的详细解释 |
| 可打印版本 1,137 / 7 |
| 第1楼 seven | 发表于 2007-06-27 16:23 |
| 新手上路 发帖 5 积分 12 | |
|
请教 shift 命令的详细解释 批处理文件下比较难看懂的就数参数问题了,而再加上shift这么一掺乎更加有点难懂了饿。所以请高手指点指点。
最好可以通过一个比较经典的例子来讲解一下阿。因为关于帮助里面关于shift的介绍似乎太理论化了,比较难懂。 等待各位高手指点,谢谢:P [ Last edited by bjsh on 2007-7-31 at 10:47 AM ] |
|
| 第2楼 zh159 | 发表于 2007-06-27 16:36 |
| 金牌会员 发帖 1,467 积分 3,687 | |
|
自己在命令行下试一下test.bat 1 2 3 4 5 6 7 8 9 0
test.bat |
|
| 第3楼 seven | 发表于 2007-06-27 16:53 |
| 新手上路 发帖 5 积分 12 | |
|
我了解你的意思,也就是说当切换到shift命令时,
参数赋予了%0 (也就是bat本身)继续运行。这 个循环玩得比较经典 :lol: 再搞个比较复杂点的来see see ... :D 谢谢 |
|
| 第4楼 zh159 | 发表于 2007-06-27 19:35 |
| 金牌会员 发帖 1,467 积分 3,687 | |
|
shift就是这样用的,没什么比较复杂的,用到才想的出来,没用到想破脑袋也see see ...不了
参数不是赋予了%0,而是从后面往前面往前面移位或者设定从第 n 个参数开始移位 |
|
| 第5楼 seven | 发表于 2007-06-28 10:04 |
| 新手上路 发帖 5 积分 12 | |
|
你也在忧郁蓝色手机论坛混得啊~~
哈哈,世界是小的~~ |
|
| 第6楼 jun19841 | 发表于 2007-10-17 14:16 |
| 初级用户 发帖 29 积分 55 来自 亚洲 | |
|
N X ~ 经典~!!
|
|
| 第7楼 jun19841 | 发表于 2007-10-17 15:41 |
| 初级用户 发帖 29 积分 55 来自 亚洲 | |
|
借题发挥一下 @echo off
set Num=1 2 3 4 5 6 7 8 9 echo @echo off >>u.bat echo set Num=%%1 >>u.bat echo :loop >>u.bat echo echo %%1 >>u.bat echo echo. >>u.bat echo pause >>u.bat echo shift >>u.bat echo goto loop >>u.bat call u.bat %Num% pause 只能 通过CALL 来完成,麻烦哪位 牛 插 的 ……出来亮亮相哦!! 不用call直接完成这个循环~! |
|
| 第8楼 pinghu | 发表于 2008-02-08 22:36 |
| 中级用户 发帖 130 积分 307 | |
|
一些初学者朋友对于shift命令感到非常的困惑,抱怨网上的一些shift命令教程很难理解。为了解决这个问题,于是我就写了一下这个
“超生游击队”教程以供初学者朋友参考。 言归正传,比如我老爸有10个儿子,我英雄是第10个。 第一步: 我们现在用一个另类的办法输出10个儿子的名字,将如下代码保存为hero.bat。 @echo off echo %1 echo %2 echo %3 echo %4 echo %5 echo %6 echo %7 echo %8 echo %9 echo %10 pause 如何运行呢?我们可以另写一个bat,内容是:call hero.bat 老大 老二 老三 …… 英雄 也就是调用hero.bat并共带10个参数! 能正确运行吗?不能,很遗憾,因为根本没有%10。 第二步: 在上一步中没有输出我英雄的大名,那难道我英雄就不是我老爸的儿子吗!我得想个办法把我的名字也输出来。 好了,借助shift命令就可以达到。我们把hero.bat中的代码改一下。 @echo off echo %1 echo %2 echo %3 echo %4 echo %5 echo %6 echo %7 echo %8 echo %9 shift echo %9 pause 终于我的大名输出了。可是英雄明明是第10个参数呀,怎么现在变成第9个了? 这个就是shift的功能. 也就是,执行shift命令以后,原来的%9变成了%8,原来的%8变成了%7,原来的%7变成了%6……而原来的%1变成了%0,此时原来的%0没了。 也就是说后面的参数依次冲掉了前面的参数,而为了输出我的名字,最终牺牲了%0。 第三步: 我老爸又认了4个干儿子,名字分别为a,b,c,d 到此,我老爸有多了4个干儿子。共14个儿子。 在调用hero.bat时又多了4个参数,则运行hero.bat时有:call hero.bat 老大 老二 老三 …… 英雄 a b c d (注意:要把省略号换成名字。) 此时,hero.bat的代码如下:(最容易理解的方法) @echo off echo %1 echo %2 echo %3 echo %4 echo %5 echo %6 echo %7 echo %8 echo %9 shift echo %9 ::现在的%9是英雄 shift echo %9 ::现在的%9是a shift echo %9 ::现在的%9是b shift echo %9 ::现在的%9是c shift echo %9 ::现在的%9是d pause |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |