每个人
我试图从批处理文件中调用python函数,特别是在if语句中(我使用python 3.3.2)。假设我有两个变量%filePath%和%filePath2%以及 getFileRevision.py 中的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函数并没有改变返回值。有谁知道这种奇怪行为的原因以及如何解决它?
非常感谢。
答案 0 :(得分:0)
在代码块内(括号内的任何代码),您无法使用'%'访问最新的变量值。您需要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%
现在应该可以正常工作。