批处理脚本中REM与::注释失效,含%~符号注释报错求助
批处理注释中%~符号导致报错的解决方法
问题原因
批处理执行时会先扫描所有行(包括REM注释行)解析%开头的语法,%~n属于参数替换的格式(比如%~n1表示提取第一个参数的文件名),但注释里仅写%~n却缺少对应参数编号,触发解析报错。
解决办法
给注释里的%添加转义,让批处理将其视为普通字符,两种有效方式:
- 用
^转义%,写成^%~n - 用双
%替代单%,写成%%~n(非FOR循环上下文里,%%会被解析为单个%)
修改后的脚本示例
@echo off REM '^%~n' is passed argument REM 也可以用这种写法:REM '%%~n' is passed argument goto :main :add_one setlocal echo Running 'add_one'... endlocal & set /a %~1=%~2+1 goto :eof :main setlocal set /a x=1 set /a y=50 echo Created variable X and set it to %x% echo. call :add_one y %y% echo. echo The value of X is now %x% endlocal goto :eof
内容的提问来源于stack exchange,提问作者Hocuda
相关产品推荐
相关产品推荐

