批处理脚本以使用python 3执行脚本(如果可用),或者使用python 2
正在尝试为windows创建批处理脚本,该脚本使用python3(如果可用)或python2运行程序 我知道脚本可以用批处理脚本以使用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%变量,可以
$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有效。不需要临时文件。