![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-10 22:57 |
共 47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [已结]关于shift的问题:第10个参数%10无法正确传递 |
| 可打印版本 719 / 7 |
| 第1楼 tempuser | 发表于 2008-12-10 14:38 |
| 高级用户 发帖 261 积分 547 | |
|
[已结]关于shift的问题:第10个参数%10无法正确传递 test.bat文件内容如下:
cmd下执行 test.bat 1 2 3 4 5 6 7 8 9 10 执行结果是:1 2 3 4 5 6 7 8 9 10(当然是立着显示的) 问题1:不是说没有%10这样的参数吗?可是%10确实传递了呀! 修改test.bat如下 cmd下执行 test.bat 1 2 3 4 5 6 7 8 9 10 执行结果是:1 2 3 4 5 6 7 8 9 20 问题:20是怎么出来的呢? 我的理解是: %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 1 2 3 4 5 6 7 8 9 10 执行到 echo %9 显示是:1 2 3 4 5 6 7 8 9 没有问题! 到了执行shift,应该是这样的 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 1 2 3 4 5 6 7 8 9 10 那么echo %10显示的应该是9而不是20啊!到这我弄不清了! ───────────────── 版务记录 ───────────────── 执行:HAT 操作:在帖子标题中增加搜索关键字;代码加code标签 说明:原标题"关于shift的问题"不利于论坛搜索 处罚:扣除2点积分 提示:建议阅读以下帖子 {1415}提问的智慧 {7326}论坛新手必读,所有人的基本行为准则 {22703}请不要做浮躁的人 {32667}那些连标题都写不清楚的人们啊,你们醒醒吧 {32825}本版严厉整顿烂帖 ───────────────── 版务记录 ───────────────── [ Last edited by HAT on 2008-12-11 at 11:16 ] |
|
| 第2楼 s11ss | 发表于 2008-12-10 15:08 |
| 银牌会员 发帖 566 积分 2,098 | |
Originally posted by tempuser at 2008-12-10 02:38 PM: 第一种情况: echo %10实际是输出%1和0。 第二种情况: echo %10实际是输出%2和0。 |
|
| 第3楼 tempuser | 发表于 2008-12-10 18:07 |
| 高级用户 发帖 261 积分 547 | |
Originally posted by s11ss at 2008-12-10 15:08: 能讲讲为什么吗?光看结果看不懂. |
|
| 第4楼 wxcute | 发表于 2008-12-10 18:38 |
| 中级用户 发帖 211 积分 458 | |
|
只要把
test.bat 1 2 3 4 5 6 7 8 9 10 换成 test.bat a b c d e f g h i j 就很明了了。 |
|
| 第5楼 s11ss | 发表于 2008-12-10 18:39 |
| 银牌会员 发帖 566 积分 2,098 | |
|
就是没有%10。
%10被看作%1和0,如果你把0改成a,那结果就分别是1a和2a。 另外,第二种情况下,由于执行了shift,会将 %1 移位到 %0,将 %2 移位到 %1,等等 [ Last edited by s11ss on 2008-12-10 at 18:48 ] |
|
| 第6楼 tireless | 发表于 2008-12-10 18:46 |
| 银牌会员 发帖 1,122 积分 2,025 | |
|
每执行一次 shift,就会将所有参数的值向左移一位。即 ——
%1 的值赋给 %0,%2 的值赋给 %1,%3 的值赋给 %2... ... 例,SHIFT2.bat 的内容是: 执行: C:\>SHIFT2.bat 1 2 从中可以看出,空值也会向左移动。利用这点,可以用 shift 计算拖入了多少个文件到批处理中: 此外,还有一个用法: C:\>shift /? |
|
| 第7楼 s11ss | 发表于 2008-12-10 18:49 |
| 银牌会员 发帖 566 积分 2,098 | |
Originally posted by tireless at 2008-12-10 06:46 PM: |
|
| 第8楼 tempuser | 发表于 2008-12-11 08:27 |
| 高级用户 发帖 261 积分 547 | |
|
谢谢!只是理解了shift的表面意思,还得多实践呀!
|
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |