[英]strange behavior when calling python function inside if statement in batch file
大家。
我正在尝试从批处理文件中调用python函数,尤其是在if语句内部(我正在使用python 3.3.2)。 假设我在getFileRevision.py中有两个变量%filePath%和%filePath2%和一个python函数。 这是我的批处理脚本的一部分:
python getFileRevision.py %filePath%
set revision=%ERRORLEVEL%
python getFileRevision.py %filePath2%
set revision2=%ERRORLEVEL%
echo Before entering if statement:
echo revision=%revision%
echo revision2=%revision2%
python getFileRevision.py %filePath%
set revision=%ERRORLEVEL%
if exist %filePath2% (
echo condition = true!
python getFileRevision.py %filePath2%
set revision2=%ERRORLEVEL%
)
echo revision=%revision%
echo revision2=%revision2%
我为两个不同的参数调用python函数,并输出返回值。 然后再做一次,但是这次我在If语句中调用python函数。 这是控制台中的打印内容:
revision=109803
revision2=109671
condition = true!
revision=109803
revision2=109803
从这个结果中,您可以看到在If语句中调用python函数并没有改变返回值。 有人知道这种奇怪行为的原因以及如何解决吗?
不管怎么说,还是要谢谢你。
在代码块内(括号内的任何代码),您不能使用'%'来访问最新的变量值。 您需要enabledelayedexpansion
并使用!
代替。
setlocal enabledelayedexpansion
python getFileRevision.py %filePath%
set revision=%ERRORLEVEL%
python getFileRevision.py %filePath2%
set revision2=%ERRORLEVEL%
echo Before entering if statement:
echo revision=%revision%
echo revision2=%revision2%
python getFileRevision.py %filePath%
set revision=%ERRORLEVEL%
if exist %filePath2% (
echo condition = true!
python getFileRevision.py %filePath2%
set revision2=!ERRORLEVEL!
)
echo revision=%revision%
echo revision2=%revision2%
现在应该可以正常工作了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.