批处理脚本以使用python 3执行脚本(如果可用),或者使用python 2

批处理脚本以使用python 3执行脚本(如果可用),或者使用python 2,python,batch-file,Python,Batch File,正在尝试为windows创建批处理脚本,该脚本使用python3(如果可用)或python2运行程序 我知道脚本可以用$py-2script.py执行 使用$py-3script.py的py3 如果我运行py-0,它将返回所有python版本 如何构建此脚本 我不想检查python目录是否可用,我更愿意以python位置无关的方式进行检查。不是完整的解决方案,而是检测安装了哪个版本的python的方法: 通过运行py-3--version,然后检查批处理脚本中的%ERRORLEVEL%变量,可以

正在尝试为windows创建批处理脚本,该脚本使用python3(如果可用)或python2运行程序

我知道脚本可以用
$py-2script.py执行
使用
$py-3script.py
的py3

如果我运行
py-0
,它将返回所有python版本

如何构建此脚本


我不想检查python目录是否可用,我更愿意以python位置无关的方式进行检查。

不是完整的解决方案,而是检测安装了哪个版本的python的方法:


通过运行
py-3--version
,然后检查批处理脚本中的
%ERRORLEVEL%
变量,可以检查是否安装了Python 3。如果为0,则表示py-3--version
成功,即系统上安装了Python 3。如果不为零,则不安装Python 3。

不是完整的解决方案,而是检测安装了哪个版本的Python的方法:


通过运行
py-3--version
,然后检查批处理脚本中的
%ERRORLEVEL%
变量,可以检查是否安装了Python 3。如果为0,则表示py-3--version成功,即系统上安装了Python 3。如果它不为零,则不安装Python 3。

直接管道
Python.exe--版本
find
findstr
不工作(使用Python 2.7)

构建dinamicaly并运行返回版本的python脚本将启用此管道

解决方案:

@echo off
set "$py=0"
call:construct

for /f "delims=" %%a in ('python #.py ^| findstr "2"') do set "$py=2"
for /f "delims=" %%a in ('python #.py ^| findstr "3"') do set "$py=3"
del #.py
goto:%$py%

echo python is not installed or python's path Path is not in the %%$path%% env. var
exit/b

:2
echo running with PY 2

exit/b

:3
echo running with PY 3

exit/b

:construct
echo import sys; print('{0[0]}.{0[1]}'.format(sys.version_info^)^) >#.py

直接管道
python.exe--version
find
findstr
不起作用(使用python 2.7)

构建dinamicaly并运行返回版本的python脚本将启用此管道

解决方案:

@echo off
set "$py=0"
call:construct

for /f "delims=" %%a in ('python #.py ^| findstr "2"') do set "$py=2"
for /f "delims=" %%a in ('python #.py ^| findstr "3"') do set "$py=3"
del #.py
goto:%$py%

echo python is not installed or python's path Path is not in the %%$path%% env. var
exit/b

:2
echo running with PY 2

exit/b

:3
echo running with PY 3

exit/b

:construct
echo import sys; print('{0[0]}.{0[1]}'.format(sys.version_info^)^) >#.py

我只安装了python 2.7!当我运行python-3版本时,它返回python 2.7,错误级别仍然为0@SachaDee,
python.exe
不是
py.exe
python.exe
不支持
-0
-2
-3
参数。py.exe的
py.exe
可以运行。我曾尝试在Python2.7中运行
py.exe
,但它显然不存在@SachaDee,您可以为或获取3.7.0 launcher.msi。使用命令msiexec/i launcher.msi ALLUSERS=1
以管理员身份安装。如果不使用
ALLUSERS
属性,则会将其安装到用户配置文件中。在Win7虚拟机中使用2.7.15进行测试。我只安装了python 2.7!当我运行python-3版本时,它返回python 2.7,错误级别仍然为0@SachaDee,
python.exe
不是
py.exe
python.exe
不支持
-0
-2
-3
参数。py.exe的
py.exe
可以运行。我曾尝试在Python2.7中运行
py.exe
,但它显然不存在@SachaDee,您可以为或获取3.7.0 launcher.msi。使用命令msiexec/i launcher.msi ALLUSERS=1
以管理员身份安装。如果不使用
ALLUSERS
属性,则会将其安装到用户配置文件中。在Win7虚拟机中使用2.7.15进行测试。
python--version 2>&1 | findstr“2.7”
?似乎对2和3有效。不需要临时文件。
python--version 2>&1 | findstr“2.7”
?似乎对2和3有效。不需要临时文件。