批处理文件未设置变量

radimpe

我正在尝试编写一个批处理文件,以简化WebService存根的生成。问题在于SET变量命令之一未设置该值。我尝试了各种方法来兑现这一点,SET但无济于事。显然缺少明显的东西。脚本的其余部分工作正常。

IF %1==-b (
    ECHO %2
    SET BINDINGS_FILE=%2
    SHIFT & SHIFT
    ECHO File: %BINDINGS_FILE%

    IF EXIST "%BINDINGS_FILE%" (
        SET BINDINGS=-b %BINDINGS_FILE%
    ) ELSE (
        ECHO Please enter a valid Bindings file name: %BINDINGS_FILE%.
        GOTO DONE
    )
    ECHO BINDINGS = %BINDINGS%  
)

当我使用以下命令执行它时,它会将绑定文件打印为,%2但是它所获取的变量SET仍然为空。

generate-stubs.bat -b wsdl/Binding.xml -p com.acme.service wsdl/WebService.wsdl

wsdl/Binding.xml
File:
Please enter a valid Bindings file name: .
Done!

任何建议表示赞赏。

MC ND

批处理文件正在将变量设置为指示的值。但是您没有看到它。

在批处理文件中,行被解析,然后执行。逐行或逐块(用括号括起来的行)。当解析器到达一行或一行块时,在读取变量的所有点上,对该变量的引用都将被删除,并开始执行该块之前用变量中的值替换因此,如果变量在块内更改其值,则从同一块内将无法访问该新值。执行的内容不包含对变量的引用,而是在解析代码时变量中的值。

要更改此行为,并能够从更改值的同一块内部读取变量的更改值,则需要延迟扩展。

启用延迟扩展后,可以在需要时将访问/读取变量的语法从更改%var%!var!这指示解析器不要执行初始替换,并延迟对值的访问,直到执行命令为止。

因此,您的代码可以像

setlocal enabledelayedexpansion 

IF "%1"=="-b" (
    ECHO %2
    SET "BINDINGS_FILE=%~2"
    SHIFT & SHIFT
    ECHO File: !BINDINGS_FILE!

    IF EXIST "!BINDINGS_FILE!" (
        SET "BINDINGS=-b !BINDINGS_FILE!"
    ) ELSE (
        ECHO Please enter a valid Bindings file name: !BINDINGS_FILE!.
        GOTO DONE
    )
    ECHO BINDINGS = !BINDINGS!  
)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

批处理文件未设置变量

来自分类Dev

在IF中时,是否未设置批处理文件中的变量?

来自分类Dev

处理批处理文件中设置变量的最佳方法

来自分类Dev

使用批处理文件设置Windows环境变量

来自分类Dev

在批处理文件中设置Bamboo变量

来自分类Dev

批处理文件中设置的变量不会显示

来自分类Dev

在批处理文件中的For中设置变量

来自分类Dev

批处理文件将wmi输出设置为变量

来自分类Dev

在批处理文件中设置Bamboo变量

来自分类Dev

如何在批处理文件中设置WMIC变量?

来自分类Dev

批处理脚本未设置变量

来自分类Dev

批处理脚本未设置变量

来自分类Dev

批处理文件:变量中的变量

来自分类Dev

从批处理文件设置错误级别

来自分类Dev

在批处理文件中设置路径

来自分类Dev

批处理文件中的PHPUnit设置

来自分类Dev

在批处理文件中设置操作

来自分类Dev

从批处理文件设置错误级别

来自分类Dev

批处理文件变量范围问题

来自分类Dev

批处理文件中的变量乘法

来自分类Dev

批处理文件变量中的句点

来自分类Dev

批处理文件变量覆盖

来自分类Dev

批处理文件和报价变量

来自分类Dev

if块中的批处理文件变量

来自分类Dev

批处理文件SET变量问题

来自分类Dev

批处理文件变量输出

来自分类Dev

变量中的批处理文件值

来自分类Dev

使用变量的批处理文件 FOR 循环

来自分类Dev

批处理文件-在“如果”中设置变量,然后在“设置”中设置