批处理fi中if语句内部调用python函数时的奇怪行为

2024-09-27 23:19:50 发布

您现在位置:Python中文网/ 问答频道 /正文

所有人。你知道吗

我试图从批处理文件调用python函数,特别是在if语句中(我使用的是python3.3.2)。假设我在中有两个变量%filePath%和%filePath2%以及一个python函数获取文件修订.py。以下是我的批处理脚本:

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函数并没有改变返回值。有人知道这种奇怪行为的原因和解决方法吗?你知道吗

无论如何谢谢你。你知道吗


Tags: 文件函数pyechotrueif语句revision
1条回答
网友
1楼 · 发布于 2024-09-27 23:19:50

在代码块(括号内的任何代码)内,不能使用“%”访问最新的变量值。您需要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%

现在应该可以了。你知道吗

相关问题 更多 >

    热门问题