试图为变量设置值

时间:2018-06-22 21:35:03

标签: batch-file

我正在尝试编写一个简单的脚本来进行git添加,提交和推送。

@echo off
SET operation=%1
SET opParam=%2
SET mainBranch=dev/1.1

if %operation%==fire (
    for /f %%i in ('git rev-parse --abbrev-ref HEAD') do set branchName=%%i
    if %opParam%.==. (
        SET opParam="autogeneratedmessage"
        @echo on
        echo %opParam%
        @echo off
    ) else (
        SET opParam="%opParam%"
        @echo on
        echo %opParam%
        @echo off
    )
    git add -A 
    git commit -m %opParam%
    git push origin %branchName%
)

问题是当第二个参数为空时,它无法在第9行将opParam的值设置为autogeneratedmessage

这是到目前为止我尝试设置opParam的内容:

SET opParam=""autogeneratedmessage""
SET opParam="autogeneratedmessage"
SET "opParam=autogeneratedmessage"

我真的看不到我在做什么错。看来这是一个简单的问题,但是我已经花了半个小时了。

1 个答案:

答案 0 :(得分:0)

我已在该块中启用了延迟扩展,并使用!而不是%来引用我的变量。

if %operation%==fire (
    setlocal enabledelayedexpansion
    for /f %%i in ('git rev-parse --abbrev-ref HEAD') do set branchName=%%i
    if %opParam%.==. (
        SET opParam="autogenerated"
        @echo on
        echo !opParam!
        @echo off
    ) else (
        SET opParam="%opParam%"
        @echo on
        echo %opParam%
        @echo off
    )
    git add -A 
    git commit -m !opParam!
    git push origin %branchName%
)