加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

windows – 批处理脚本解释注释中的内容?

发布时间:2020-12-14 01:35:48 所属栏目:Windows 来源:网络整理
导读:当我运行以下批处理脚本时: @echo offREM %~ will strip surrounding quotes if anyecho HERE 我收到以下错误: C:test.cmdThe following usage of the path operator in batch-parametersubstitution is invalid: %~ will strip surrounding quotes if an
当我运行以下批处理脚本时:

@echo off
REM %~ will strip surrounding quotes if any

echo HERE

我收到以下错误:

C:&;test.cmd
The following usage of the path operator in batch-parameter
substitution is invalid: %~ will strip surrounding quotes if any

For valid formats type CALL /? or FOR /?

如果将REM更改为::,效果相同.

好像解析器忽略了注释指示符并解析了%?.如果我在%和?之间放置一个空格,那么它可以正常工作.

Windows 7企业版(尚未检查任何其他版本).

对我来说似乎是一个错误,但我错过了什么?

解决方法

%-expansion,因此扩展正常环境变量(如%VAR%)以及命令行参数(如%0),是读取一行后的第一步,因此甚至在识别rem命令之前就会发生这种情况.因此,您需要避免%?(例如,通过编写rem%?…).

鉴于command extensions已启用,无论如何都是默认值,%?被识别为无效参数语法(?应该跟随一个十进制数字,表示参数位置或有效修饰符,如f,d,p,n,x等;见Command Line arguments (Parameters))并导致致命错误,这意味着抛出错误消息并中止批处理文件处理(尽管未设置%ErrorLevel%).

当您尝试执行sub-string substitution但指定空搜索字符串(如%VAR:=替换%或%VAR:* =替换%,假定已定义VAR),同时启用了命令扩展,则会出现相同的效果.

另请参见此主题:How does the Windows Command Interpreter (CMD.EXE) parse scripts?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读