每个人。
我试图从批处理文件中调用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%
现在应该可以正常工作了。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句