我正在一个项目上,遇到一个问题,即回显功能有时什么也不显示,或者批处理脚本的某些部分不起作用。
此处,%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_Build
或Normal_Build
。
答案 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
语句。