- 批处理脚本教程
- 批处理脚本 - 首页
- 批处理脚本 - 概述
- 批处理脚本 - 环境
- 批处理脚本 - 命令
- 批处理脚本 - 文件
- 批处理脚本 - 语法
- 批处理脚本 - 变量
- 批处理脚本 - 注释
- 批处理脚本 - 字符串
- 批处理脚本 - 数组
- 批处理脚本 - 决策
- 批处理脚本 - 运算符
- 批处理脚本 - 日期和时间
- 批处理脚本 - 输入/输出
- 批处理脚本 - 返回代码
- 批处理脚本 - 函数
- 批处理脚本 - 进程
- 批处理脚本 - 别名
- 批处理脚本 - 设备
- 批处理脚本 - 注册表
- 批处理脚本 - 网络
- 批处理脚本 - 打印
- 批处理脚本 - 调试
- 批处理脚本 - 日志记录
- 批处理脚本资源
- 批处理脚本 - 快速指南
- 批处理脚本 - 有用资源
- 批处理脚本 - 讨论
批处理脚本 - 使用 SHIFT 运算符
命令行参数的限制之一是它只能接受最多 %9 的参数。让我们来看一个这个限制的例子。
示例
@echo off echo %1 echo %2 echo %3 echo %4 echo %5 echo %6 echo %7 echo %8 echo %9 echo %10
输出
如果以上代码存储在一个名为 test.bat 的文件中,并且该文件运行如下:
test.bat a b c d e f g h i j
则输出如下。
a b c d e f h i a0
从上面的输出可以看出,应该显示为“j”的最终值显示为 a0。这是因为没有名为 %10 的参数。
可以使用 SHIFT 运算符避免此限制。在批处理文件处理完其第一个参数后,可以将它们移位(只需插入一行仅包含 SHIFT 命令),导致 %1 获取值 B,%2 获取值 C,依此类推,直到 %9,现在获取值 J。继续此过程,直到至少 %9 为空。
让我们看一个如何使用 SHIFT 运算符克服命令行参数限制的示例。
示例
@ECHO OFF :Loop IF "%1"=="" GOTO Continue echo %1% SHIFT GOTO Loop :Continue
如果以上代码存储在一个名为 test.bat 的文件中,并且该文件运行如下:
test.bat a b c d e f g h i j
则输出如下。
a b c d e f h i j
注意
批处理文件会忽略命令行中的某些字符,具体取决于 DOS 版本、它们是否“转义”以及通常取决于它们在命令行中的位置 -
逗号 (",") 将被空格替换,除非它们是双引号中字符串的一部分。
分号 (";") 将被空格替换,除非它们是双引号中字符串的一部分。
"=" 字符有时会被空格替换,但如果它们是双引号中字符串的一部分则不会。
第一个正斜杠 ("/") 仅在它紧跟在命令后面且前面没有空格时才会被空格替换。
多个空格将被单个空格替换,除非它们是双引号中字符串的一部分。
制表符将被单个空格替换。
第一个命令行参数之前的空格将被忽略。
最后一个命令行参数之后的空格将被修剪。
batch_script_functions.htm
广告