windows - 批量赋值给参考变量
问题描述
我一直在批处理函数/子例程中遇到一个奇怪的问题,其中分配给引用变量将按预期工作,但总是会打印出一个错误,指出“命令的语法不正确”。
这是一个示例批处理脚本:
@echo off
setlocal enabledelayedexpansion
set Foo=1
call :JustAFunction Foo
echo %Foo%
:JustAFunction
set %1=Bar
goto :eof
endlocal
及其输出:
C:\Users\Thane\Desktop>test.bat
Bar
The syntax of the command is incorrect.
为什么会发生这种情况,正确的语法是什么?
解决方案
最后你需要“goto :EOF”;否则它将尝试执行 :JustAFunction 代码(批处理不会因为遇到函数而停止)
@echo off
setlocal enabledelayedexpansion
set Foo=1
call :JustAFunction Foo
echo %Foo%
goto :EOF
rem ^^^^^^^^^^^^^^ you need line above.
:JustAFunction
set "%1=Bar"
goto :eof
endlocal
推荐阅读
- reactjs - 如何在反应选择中输入按键时防止选择值
- delphi - 有没有办法在 TCalendar 中突出显示单元格?
- spring-boot - 带有 spring-data-elastic 的 Spring Boot 连接到 AWS 服务器上的 Elastic Search 7.4.0
- sql - 重命名索引产生“错误:未实现跨数据库引用”
- c++ - 最小硬币找零问题(自上而下的方法)
- python - 用 Python 解决问题
- machine-learning - Keras 使用 model.predict 的准确性错误
- javascript - 我可以放入什么状态?
- c# - 等待和使用丢弃之间的区别
- javascript - 将逗号分隔的字符串添加到数组