批处理文件bat语法_第1页
批处理文件bat语法_第2页
批处理文件bat语法_第3页
批处理文件bat语法_第4页
批处理文件bat语法_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

扩展名是 bat 在 NT 2000 XP 2003 下也可以是 cmd 的文件就是批处理文件 注 bat 是 dos 下的批处理文件 cmd 是 NT 内核命令行环境的另一种批处理文件 从更广义的角度来看 Unix 的 shell 脚本以及其它操作系统甚至应用程序中由外壳进行解 释执行的文本 都具有与批处理文件十分相似的作用 而且同样是由 专用解释器以行为单位 解释执行 这种文本形式更通用的称谓是脚本语言 所以从某个程度分析 batch Unix shell awk basic perl 等脚本语言都是一样的 只不过应用的范围和解释的平台各有不同而已 甚至 有些应用程序仍然沿用批处理这一称呼 而其内容和扩展名与 dos 的批处理却又完全不同 首先批处理文件是一个文本文件 这个文件的每一行都是一条 DOS 命令 大部分时候就 好象我们在 DOS 提示符下执行的命令行一样 你可以使用 DOS 下的 Edit 或者 Windows 的 记事本 notepad 等任何文本文件编辑工具创建和修改批处理文件 注 批处理文件中完全可以使用非 dos 命令 甚至可以使用不具有可执行特性的普通数据性文件 这缘于 windows 系统这个新型解释平台的涉入 使得批处理的应 用越来越 边缘化 所以我们讨论的批处理应该限定 在 dos 环境或者命令行环境中 否则很多观念和设定都需要做比较大的变动 其次 批处理文件是一种简单的程序 可以通过条件语句 if 和流程控制语句 goto 来控制 命令运行的流程 在批处理中也可以使用循环语句 for 来 循环执行一条命令 当然 批处理文 件的编程能力与 C 语言等编程语句比起来是十分有限的 也是十分不规范的 批处理的程序语 句就是一条条的 DOS 命令 包括 内部命令和外部命令 而批处理的能力主要取决于你所使 用的命令 注 批处理文件 batch file 也可以称之为批处理程序 batch program 这一点与编译型语言有所不同 就 c 语言来说 扩展名为 c 或者 cpp 的文件可以称之为 c 语言文件或者 c 语言源代码 但只有编译连接后的 exe 文件才可以称之为 c 语言程序 因为批处理文件本身既具有文本的可读性 又具有程序的可执行性 这些称谓 的界限是比较模糊的 第三 每个编写好的批处理文件都相当于一个 DOS 的外部命令 你可以把它所在的目录 放到你的 DOS 搜索路径 path 中来使得它可以在任意位置运行 一个 良好的习惯是在硬盘上 建立一个 bat 或者 batch 目录 例如 c batch 然后将所有你编写的批处理文件放到该目录中 这样只要在 path 中设置 上 c batch 你就可以在任意位置运行所有你编写的批处理程序 注 纯以 dos 系统而言 可执 行程序大约可以细分为五类 依照执行优先级由高到低排列分别是 doskey 宏命令 预先驻留内存 中的内部命令 根据内存的环 境随时进驻内存 以 com 为扩展名 的可执行程序 由 直接载入内存 以 exe 位扩展名的可执行程序 由 重定位 后载入内存 以 bat 位扩展名的批处理程序 由 解释分析 根据其内容按优先级顺序调用第 2 3 4 5 种可执行程序 分析一行 执行一行 文件本身不载入内存 第四 在 DOS 和 Win9x Me 系统下 C 盘根目录下的 autoexec bat 批处理文件是自动运 行批处理文件 每次系统启动时会自动运行该文件 你 可以将系统每次启动时都要运行的命 令放入该文件中 例如设置搜索路径 调入鼠标驱动和磁盘缓存 设置系统环境变量等 下面 是一个运行于 Windows 98 下的 autoexec bat 的示例 echo off path c windows c windows command c ucdos c dostools c systools c wintools c batch lh smartdrv exe x lh insert lh ctmouse exe set temp d temp set tmp d temp 注 autoexec bat 为 DOS 系统的自动运行批处理文件 由 启动时解释执行 而在 Win9x 环境中 不仅增加支持 dosstart bat winstart bat 等许多其它自动运行的批处理文件 对 autoexec bat 也增加了 dos w40 bak old pws 等许多变体以适应复杂的环境和多变的需求 以下关于命令的分类 有很多值得推敲的地方 常用命令中的 本不是命令 而 dir copy 等也很常用的命令却没有列入 而特殊命令中所有命令对我来说都是常用命令 建议 将批处理所引用的命令分为内部命令 外部命令 第三方程序三类 而内部命令和外部命令中 别有一类是专用于或常用于批处理中的命令可称之为 批处理命令 以下摘录 MS DOS 6 22 帮助文档中关于 批处理命令 的文字 当然 其中有些概念和定 义已经有些落后了 批处理文件或批处理程序是一个包含若干 MS DOS 命令的正文文件 扩展名为 bat 当在 命令提示符下敲入批处理程序的名称时 MS DOS 成组执行此批处理程序中的命令 任何在命 令提示符下可使用的命令都可用在批处理程序中 此外 下面 MS DOS 命令是专门在批处理 程序中使用的 常用命令常用命令 echo call pause rem 小技巧 用 代替 rem 是批处理文件最常用的几个命令 我 们就从他们开始学起 注 一 不是一个命令 而是 DOS 批处理的一个特殊标记符 仅用于屏蔽命令行回显 下面是 DOS 命令 行或批处理中可能会见到的一些特殊标记符 CR 0D 命令行结束符 Escape 1B ANSI 转义字符引导符 Space 20 常用的参数界定符 Tab 09 不常用的参数界定符 COPY 命令文件连接符 文件通配符 字符串界定符 命令管道符 文件重定向符 命令行回显屏蔽符 参数开关引导符 批处理标签引导符 批处理变量引导符 二 确实可以起到 rem 的注释作用 而且更简洁有效 但有两点需要注意 除了 之外 任何以 开头的字符行 在批处理中都被视作标号 而直接忽略其后的所有内容 只是为 了与正常的标号相区别 建议使用 goto 所无法识别的标号 即在 后紧跟一个非字母数字的一个特殊符号 与 rem 不同的是 后的字符行在执行时不会回显 无论是否用 echo on 打开命令行回显状态 因为命 令解释器不认为他是一个有效的命令行 就此点来看 rem 在某些场合下将比 更为适用 另外 rem 可以用 于 config sys 文件中 echo 表示显示此命令后的字符 echo off 表示在此语句后所有运行的命令都不显示命令行本身 与 echo off 相象 但它是加在每个命令行的最前面 表示运行时不显示这一行的命令行 只 能影响当前行 call 调用另一个批处理文件 如果不用 call 而直接调用别的批处理文件 那么执行完那个批处 理文件后将无法返回当前文件并执行当前文件的后续命令 pause 运行此句会暂停批处理的执行并在屏幕上显示 Press any key to continue 的提示 等 待用户按任意键后继续 rem 表示此命令后的字符为解释行 注释 不执行 只是给自己今后参考用的 相当于程序 中的注释 注 此处的描述较为混乱 不如直接引用个命令的命令行帮助更为条理 echo 当程序运行时 显示或隐藏批处理程序中的正文 也可用于允许或禁止命令的回显 在运行批 处理程序时 MS DOS 一般在屏幕上显示 回显 批处理程序中的命令 使用 ECHO 命令可 关闭此功能 语法 echo on off 若要用 echo 命令显示一条命令 可用下述语法 echo message 参数 on off 指定是否允许命令的回显 若要显示当前的 echo 的设置 可使用不带参数的 echo 命令 message 指定让 MS DOS 在屏幕上显示的正文 call 从一个批处理程序中调用另一个批处理程序 而不会引起第一个批处理的中止 语法 call drive path filename batch parameters 参数 drive path filename 指定要调用的批处理程序的名字及其存放处 文件名必须用 BAT 作 扩展名 batch parameters 指定批处理程序所需的命令行信息 pause 暂停批处理程序的执行并显示一条消息 提示用户按任意键继续执行 只能在批处 理程序中使用该命令 语法 pause rem 在批处理文件或 config sys 中加入注解 也可用 rem 命令来屏蔽命令 在 config sys 中也可以用分号 代替 REM 命令 但在批处理文件中则不能替代 语法 rem string 参数 string 指定要屏蔽的命令或要包含的注解 例 1 用 edit 编辑 a bat 文件 输入下列内容后存盘为 c a bat 执行该批处理文件后可实现 将根目录中所有文件写入 a txt 中 启动 ucdos 进入 WPS 等功能 批处理文件的内容为 命令注释 echo off 不显示后续命令行及当前命令行 dir c a txt 将 c 盘文件列表写入 a txt call c ucdos ucdos bat 调用 ucdos echo 你好 显示 你好 pause 暂停 等待按键继续 rem 准备运行 wps 注释 准备运行 wps cd ucdos 进入 ucdos 目录 wps 运行 wps 批处理文件还可以像 C 语言的函数一样使用参数 相当于 DOS 命令的命令行参数 这需 要用到一个参数表示符 1 9 表示参数 参数是指在运行批处理文件时在文件名后加的 以空格 或者 Tab 分隔的字符串 变量可以从 0 到 9 0 表示批处理命令本身 其它参 数字符串用 1 到 9 顺序表示 例 2 C 根目录下有一批处理文件名为 f bat 内容为 echo off format 1 如果执行 C f a 那么在执行 f bat 时 1 就表示 a 这样 format 1 就相当于 format a 于是上面的命令运 行时实际执行的是 format a 例 3 C 根目录下一批处理文件名为 t bat 内容为 echo off type 1 type 2 那么运行 C t a txt b txt 1 表示 a txt 2 表示 b txt 于是上面的命令将顺序地显示 a txt 和 b txt 文件的内容 注 参数在批处理中也作为变量处理 所以同样使用百分号作为引导符 其后跟 0 9 中的一个 数字构成参数引用符 引用符和参数之间 例如上文中的 1 与 a 的关系类似于变量指针 与变量值的关系 当我们要引用第十一个或更多个参数时 就必须移动 DOS 的参数起始指针 shift 命令正充当了这个移动指针的角色 它将参数的起始指针移动到下一个参数 类似 C 语言 中的指针操作 图示如下 初始状态 cmd 为命令名 可以用 0 引用 cmd arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 arg9 arg10 0 1 2 3 4 5 6 7 8 9 经过 1 次 shift 后 cmd 将无法被引用 cmd arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 arg9 arg10 0 1 2 3 4 5 6 7 8 9 经过 2 次 shift 后 arg1 也被废弃 9 指向为空 没有引用意义 cmd arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 arg9 arg10 0 1 2 3 4 5 6 7 8 遗憾的是 win9x 和 DOS 下均不支持 shift 的逆操作 只有在 NT 内核命令行环境下 shift 才 支持 n 参数 可以以第一参数为基准返复移动起始指针 特殊命令 if goto choice for 是批处理文件中比较高级的命令 如果这几个你用得很熟练 你就是批处理 文件的专家啦 一 if 是条件语句 用来判断是否符合规定的条件 从而决定执行不同的命令 有三种格式 1 if not 参数 字符串 待执行的命令 参数如果等于 not 表示不等 下同 指定的字符串 则条件成立 运行命令 否则运行下一 句 例 if 1 a format a if 的命令行帮助中关于此点的描述为 if not string1 string2 command 在此有以下几点需要注意 1 包含字符串的双引号不是语法所必须的 而只是习惯上使用的一种 防空 字符 2 string1 未必是参数 它也可以是环境变量 循环变量以及其他字符串常量或变量 3 command 不是语法所必须的 string2 后跟一个空格就可以构成一个有效的命令行 2 if not exist 路径 文件名 待执行的命令 如果有指定的文件 则条件成立 运行命令 否则运行下一句 如 if exist c config sys type c config sys 表示如果存在 c config sys 文件 则显示它的内容 也可以使用以下的用法 if exist command device 是指 DOS 系统中已加载的设备 在 win98 下通常有 aux prn con nul com1 com2 com3 com4 lpt1 lpt2 lpt3 lpt4 xmsxxxx0 emmxxxx0 a b c clock config dblbuff ifs hlp 具体的内容会因硬软件环境的不同而略有差异 使用这些设备名称时 需要保证以下三点 1 该设备确实存在 由软件虚拟的设备除外 2 该设备驱动程序已加载 aux prn 等标准设备由系统缺省定义 3 该设备已准备好 主要是指 a b com1 lpt1 等 可通过命令 mem d find device i 来检阅你的系统中所加载的设备 另外 在 DOS 系统中 设备也被认为是一种特殊的文件 而文件也可以称作字符设备 因 为设备 device 与文件都是使用句柄 handle 来管理的 句柄就是名字 类似于文件名 只不过 句柄不是应用于磁盘管理 而是应用于内存管理而已 所谓设备加载也即指在内存中为其分配 可引用的句柄 3 if errorlevel 待执行的命令 很多 DOS 程序在运行结束后会返回一个数字值用来表示程序运行的结果 或者状态 通过 if errorlevel 命令可以判断程序的返回值 根据不同的返回值来决定执行不同的命令 返回值必须 按照从大到小的顺序排列 如果返回值等于指定的数 字 则条件成立 运行命令 否则运行 下一句 如 if errorlevel 2 goto x2 返回值从大到小的顺序排列不是必须的 而只是执行命令为 goto 时的习惯用法 当使用 set 作为执行命令时 通常会从小到大顺序排列 比如需将返回码置入环境变量 就需使用以下的顺 序形式 if errorlevel 1 set el 1 if errorlevel 2 set el 2 if errorlevel 3 set el 3 if errorlevel 4 set el 4 if errorlevel 5 set el 5 当然 也可以使用以下循环来替代 原理是一致的 for e in 1 2 3 4 5 6 7 8 do if errorlevel e set el e 更高效简洁的用法 可以参考我写的另一篇关于获取 errorlevel 的文章 出现此种现象的原因是 if errorlevel 比较返回码的判断条件并非等于 而是大于等于 由于 goto 的跳转特性 由小到大排序会导致在较小的返回码处就跳出 而由于 set 命令的 重复 赋 值特性 由大到小排序会导致较小的返回码 覆盖 较大的返回码 另外 虽然 if errorlevel command 也是有效的命令行 但也只是 解 释命令行时将 作为命令行切分符而忽略掉罢了 二 goto 批处理文件运行到这里将跳到 goto 所指定的标号 标号即 label 标号用 后跟标准字 符串来定义 处 goto 语句一般与 if 配合使用 根据不同的条件来执行不同的命令组 如 goto end end echo this is the end 标号用 字符串 来定义 标号所在行不被执行 label 常被译为 标签 但是这并不具有广泛的约定性 goto 与 联用可实现执行中途的跳转 再结合 if 可实现执行过程的条件分支 多个 if 即可实 现命令的分组 类似 C 中 switch case 结构或者 Basic 中的 select case 结构 大规模且结 构化的命令分组即可实现高级语言中的函数功能 以下是批处理和 C Basic 在语法结构上的对 照 batch c basic goto 同时 必须用 T 指定 nnnn M text 指定提示之前要显示的消息 如果没有指定 工具只 显示提示 显示帮助消息 注意 errorlevel 环境变量被设置为从选择集选择的键索引 列出的第一个选 择返回 1 第二个选择返回 2 等等 如果用户按的键不是有效的选择 该工具会发出警告响声 如果该工具检测到错误状态 它会返回 255 的 errorlevel 值 如果用户按 Ctrl Break 或 Ctrl C 键 该工具会返回 0 的 errorlevel 值 在一个批程序中使用 errorlevel 参数时 将参数降 序排列 示例 choice choice C YNC M 确认请按 Y 否请按 N 或者取消请按 C choice T 10 C ync CS D y choice C ab M 选项 1 请选择 a 选项 2 请选择 b choice C ab N M 选项 1 请选择 a 选项 2 请选择 b willsort 编注 我列出 win98 下 choice 的用法帮助 已资区分 Waits for the user to choose one of a set of choices 等待用户选择一组待选字符中的一个 choice C choices N S T c nn text C choices Specifies allowable keys Default is YN 指定允许的按键 待选字符 默认为 YN N Do not display choices and at end of prompt string 不显示提示字符串中的问号和待选字 符 S Treat choice keys as case sensitive 处理待选字符时大小写敏感 T c nn Default choice to c after nn seconds 在 nn 秒后默认选择 c text Prompt string to display 要显示的提示字符串 errorlevel is set to offset of key user presses in choices errorlevel 被设置为用户键入的字符 在待选字符中的偏移值 如果我运行命令 choice C YNC M 确认请按 Y 否请按 N 或者取消请按 C 屏幕上会 显示 确认请按 Y 否请按 N 或者取消请按 C Y N C 例 test bat 的内容如下 注意 用 if errorlevel 判断返回值时 要按返回值从高到低排列 echo off choice C dme M defrag mem end if errorlevel 3 goto end if errorlevel 2 goto mem if errorlevel 1 goto defrag defrag c dos defrag goto end mem mem goto end end echo good bye 此批处理运行后 将显示 defrag mem end D M E 用户可选择 d m e 然后 if 语句根据 用户的选择作出判断 d 表示执行标号为 defrag 的程序段 m 表示执行标号为 mem 的程序段 e 表示执行标号为 end 的程序段 每个 程序段最后都以 goto end 将程序跳到 end 标号处 然 后程序将显示 good bye 批处理运行结束 四 for 循环命令 只要条件符合 它将多次执行同一命令 语法 对一组文件中的每一个文件执行某个特定命令 for variable in set do command command parameters variable 指定一个单一字母可替换的参数 set 指定一个或一组文件 可以使用通配符 command 指定对每个文件执行的命令 command parameters 为特定命令指定参数或命令行开关 例如一个批处理文件中有一行 for c in bat txt do type c 则该命令行会显示当 前目录下所有以 bat 和 txt 为扩展名的文件的内容 willsort 编注 需要指出的是 当 中的字符串并非单个或多个文件名时 它将单纯被当作字符串替换 这个特 性再加上 中可以嵌入多个字符串的特性 很明显 for 可以被看作一种遍历型循环 当然 在 nt 2000 xp 2003 系列的命令行环境中 for 被赋予了更多的特性 使之可以分析命令 输出或者文件中的字符串 也有很多开关被用于扩展了文件替换功能 批处理示例 1 if exist 1 首先用记事本在 C 建立一个 test1 bat 批处理文件 文件内容如下 echo off if exist autoexec bat type autoexec bat if not exist autoexec bat echo autoexec bat does not exist 然后运行它 C test1 bat 如果 C 存在 autoexec bat 文件 那么它的内容就会被显示出来 如果不存在 批处理就会提 示你该文件不存在 2 接着再建立一个 test2 bat 文件 内容如下 echo off if exist 1 type 1 if not exist 1 echo 1 does not exist 执行 C test2 autoexec bat 该命令运行结果同上 说明 1 if exist 是用来测试文件是否存在的 格式为 if exist 路径 文件名 命令 2 test2 bat 文件中的 1 是参数 DOS 允许传递 9 个批参数信息给批处理文件 分别为 1 9 0 表示 test2 命令本身 这有点象编程中的实参和形参的关系 1 是形参 autoexec bat 是实参 willsort 编注 DOS 没有 允许传递 9 个批参数信息 的限制 参数的个数只会受到命令行长度和所调用命令 处理能力的限制 但是 我们在批处理程序中 在同一时刻只能同时引用 10 个参数 因为 DOS 只给出了 0 9 这十个参数引用符 3 更进一步的 建立一个名为 test3 bat 的文件 内容如下 echo off if 1 a echo xiao if 2 b echo tian if 3 c echo xin 如果运行 C test3 a b c 屏幕上会显示 xiao tian xin 如果运行 c test3 a b 屏幕上会显示 xiao tian 在这个命令执行过程中 DOS 会将一个空字符串指定给参数 3 2 if errorlevel 建立 test4 bat 内容如下 echo off xcopy c autoexec bat d if errorlevel 1 echo 文件拷贝失败 if errorlevel 0 echo 成功拷贝文件 然后执行文件 c test4 如果文件拷贝成功 屏幕就会显示 成功拷贝文件 否则就会显示 文件拷贝失败 if errorlevel 是用来测试它的上一个 DOS 命令的返回值的 注意只是上一个命令的返回值 而 且返回值必须依照从大到小次序顺序判断 因此下面的批处理文件是错误的 echo off xcopy c autoexec bat D if errorlevel 0 echo 成功拷贝文件 if errorlevel 1 echo 未找到拷贝文件 if errorlevel 2 echo 用户通过 ctrl c 中止拷贝操作 if errorlevel 3 echo 预置错误阻止文件拷贝操作 if errorlevel 4 echo 拷贝过程中写盘错误 无论拷贝是否成功 后面的 未找到拷贝文件 用户通过 ctrl c 中止拷贝操作 预置错误阻止文件拷贝操作 拷贝过程中写盘错误 都将显示出来 以下就是几个常用命令的返回值及其代表的意义 backup 0 备份成功 1 未找到备份文件 2 文件共享冲突阻止备份完成 3 用户用 ctrl c 中止备份 4 由于致命的错误使备份操作中止 diskcomp 0 盘比较相同 1 盘比较不同 2 用户通过 ctrl c 中止比较操作 3 由于致命的错误使比较操作中止 4 预置错误中止比较 diskcopy 0 盘拷贝操作成功 1 非致命盘读 写错 2 用户通过 ctrl c 结束拷贝操作 3 因致命的处理错误使盘拷贝中止 4 预置错误阻止拷贝操作 format 0 格式化成功 3 用户通过 ctrl c 中止格式化处理 4 因致命的处理错误使格式化中止 5 在提示 proceed with format y n 下用户键入 n 结束 xcopy 0 成功拷贝文件 1 未找到拷贝文件 2 用户通过 ctrl c 中止拷贝操作 4 预置错误阻止文件拷贝操作 5 拷贝过程中写盘错误 chkdsk 0 未找到错误 255 找到一个或多个错误 choice 0 用户按下 ctrl c break 1 用户按下第一个键 255 检测到命令行中的错误条件 其它 用户按下的有效字符在列表中的位置 defrag 0 碎片压缩成功 1 出现内部错误 2 磁盘上没有空簇 要运行 DEFRAG 至少要有一个空簇 3 用户用 Ctrl C 退出了 DEFRAG 4 出现一般性错误 5 DEFRAG 在读簇时遇到错误 6 DEFRAG 在写簇时遇到错误 7 分配空间有错 8 内存错 9 没有足够空间来压缩磁盘碎片 deltree 0 成功地删除一个目录 diskcomp 0 两盘相同 1 发现不同 2 按 CTRL C 终止了比较 3 出现严重错误 4 出现初始化错误 find 0 查找成功且至少找到了一个匹配的字符串 1 查找成功但没找到匹配的字符串 2 查找中出现了错误 keyb 0 键盘定义文件装入成功 1 使用了非法的键盘代码 字符集或语法 2 键盘定义文件坏或未找到 4 键盘 监视器通讯时出错 5 要求的字符集未准备好 move 0 成功地移动了指定的文件 1 发生了错误 msav N 86 检查到了病毒 replace 0 replace 成功地替换或加入了文件 1 ms dos 版本和 REPLACE 不兼容 2 replace 找不到源文件 3 replace 找不到源路径或目标路径 5 不能存取要替换的文件 8 内存不够无法执行 replace 11 命令行句法错误 restore 0 restore 成功地恢复了文件 1 restore 找不到要恢复的文件 3 用户按 ctrl c 终止恢复过程 4 restore 因错误而终止 scandisk 0 ScanDisk 在它检查的驱动器上未检测到任何错误

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论