中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-08 11:10
47,811 主题排行 / 349,895 发帖 / 今日 0 篇 / 48,253 会员排行
DOS学习入门 & 精彩文章 (教学室) » 批处理命令-----Shift的用法!
可打印版本  9,859 / 24
第16楼 zyz0304360 发表于 2008-02-11 14:54
中级用户 发帖 123 积分 257 来自 烟台
谢谢你们,我懂了
第17楼 zyz0304360 发表于 2008-02-11 14:58
中级用户 发帖 123 积分 257 来自 烟台
更改批处理文件中可替换参数的位置。

SHIFT [/n]

如果命令扩展名被启用,SHIFT 命令支持/n 命令行开关;该命令行开关
命令从第 n 个参数开始移位;n 介于零和八之间。例如:

SHIFT /2

会将 %3 移位到 %2,将 %4 移位到 %3,等等;并且不影响 %0 和 %1。

跟33楼的抛位差不多一个意思

shift /n
用第n+1个参数代替第n个参数的位置
后续参数同上
第18楼 jiulong 发表于 2008-02-19 15:51
中级用户 发帖 183 积分 396
利用SHIFT /数字来移位显示到移位之后的数字,有意思
第19楼 wjmm 发表于 2008-06-26 09:22
初级用户 发帖 19 积分 48
Originally posted by guxingyibei at 2007-7-11 11:52 AM:
知道用法,但是实际中见的很少!不知道在哪里用


范例
以下批处理文件 Mycopy.bat 显示了如何使用包含任意数目批处理参数的 shift 命令。该批处理文件将一列文件复制到特定的目录。批处理参数由目录和文件名参数表示。

@echo off
rem MYCOPY.BAT copies any number of files
rem to a directory.
rem The command uses the following syntax:
rem mycopy dir file1 file2 ...
set todir=%1
:getfile
shift
if "%1"=="" goto end
copy %1 %todir%
goto getfile
:end
set todir=
echo All done
第20楼 jsunhj 发表于 2008-06-26 10:54
贫困用户 发帖 11 积分 -5
===b.bat===
@call a.bat 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

===a.bat===
@echo off&cls
shift /3 ==>第3个参数3被去掉,于是传入的就是 1 2 4 5 6 7 8 9 10
echo %1 %2 %3 %4 %5 %6 %7 %8 %9
shift /4 ==>在上面剩余参数的基础上,再去掉第4个参数5,于是传入的就是 1 2 4 6 7 8 9 10 11
echo %1 %2 %3 %4 %5 %6 %7 %8 %9
shift /5 ==>在上面剩余参数的基础上,再去掉第5个参数7,于是传入的就是 1 2 4 6 8 9 10 11 12
echo %1 %2 %3 %4 %5 %6 %7 %8 %9
pause
第21楼 hisplay 发表于 2008-08-17 11:16
初级用户 发帖 56 积分 108
maple 不是内部命令?
第22楼 weizai3 发表于 2008-09-15 22:30
初级用户 发帖 10 积分 20
shift /0 时,参数从第零位数开始左移一位,结果为:2,3,4,5,6,7,8,9,10
shift /1 时,参数从第一位数开始左移一位,结果为:3,4,5,6,7,8,9,10,11
shift /2 时,参数从第二位数开始左移一位,结果为:3,5,6,7,8,9,10,11,12
shift /3 时,参数从第三位数开始左移一位,结果为:3,5,7,8,9,10,11,12,13
shift /4 时,参数从第四位数开始左移一位,结果为:3,5,7,9,10,11,12,13,14
shift /5 时,参数从第五位数开始左移一位,结果为:3,5,7,9,11,12,13,14,15
下面也就依次类推下去就OK了
看明白了吧。
第23楼 weizai3 发表于 2008-09-15 22:41
初级用户 发帖 10 积分 20
以上方法有点傻,一个比较理解的简单办法
SHIFT /N 也就是在目前有效值范围内去掉N(N=1,2,3,4.....)位置的数,就OK了。(N=0=1,明白吗?)
第24楼 8417a 发表于 2010-01-08 14:45
新手上路 发帖 3 积分 5
哈哈
看了半天,从懂到不懂,又从不懂到懂。呵呵,总算清楚了。
就是去掉第N个,由后面的补上来。但是,并不影响最前面两个。
第25楼 js588 发表于 2010-03-08 12:22
初级用户 发帖 14 积分 26 来自 江苏盐城
学习了啊
上一页  1 2
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023