一些回显语句在批处理脚本中不起作用

时间:2019-07-15 14:19:17

标签: batch-file

我正在一个项目上,遇到一个问题,即回显功能有时什么也不显示,或者批处理脚本的某些部分不起作用。

此处,%Project_ModelSW_Path%和所有其他路径在脚本的其他一些部分中定义。

变量Build_type不显示在输出中,并留空。

echo %Build_type%行的

输出是“回声已关闭”。

任何人都可以帮助我,为什么有时echo函数不显示任何内容。

set COMMITTIME=%date:~-4%-%date:~-7,2%-%date:~-10,2%-%time:~-11,2%-%time:~-8,2%-%time:~-5,2%
    setlocal enabledelayedexpansion
    set COMMITTIME=!COMMITTIME:^ =0!
    setlocal disabledelayedexpansion
    echo ##%COMMITTIME%##


set Build_Type=Nightly_Build
if %time:~-11,2% GTR 5 set Build_Type=Normal_Build
echo %Build_Type%

svn commit %Project_ModelSW_Path%        -m "%Build_Type% %COMMITTIME%" || echo ERROR commiting ec_baic && exit /b
svn commit %Project_ModelSW_ALL_Path%        -m "%Build_Type% %COMMITTIME%" || echo ERROR commiting ec_baic && exit /b
    svn commit %Project_ModelSW_MDL_Path%        -m "%Build_Type% %COMMITTIME%" || echo ERROR commiting ec_baic && exit /b

我希望Build_type显示Nightly_BuildNormal_Build

1 个答案:

答案 0 :(得分:0)

这可能是由于setlocal的使用方式所致;我建议将setlocal disabledelayedexpansion更改为endlocal并将Build_Type变量放在感叹号之间:

set COMMITTIME=%date:~-4%-%date:~-7,2%-%date:~-10,2%-%time:~-11,2%-%time:~-8,2%-%time:~-5,2%
    setlocal enabledelayedexpansion
    set COMMITTIME=!COMMITTIME:^ =0!
    endlocal
    echo ##%COMMITTIME%##

if %time:~-11,2% GTR 5 (
    set "Build_Type=Normal_Build"
    ) else (
    set "Build_Type=Nightly_Build"
)

echo !Build_Type!

我还将Build_Type变量部分更改为if then语句。

参考:IFsetlocal