项目需要,双击启动python脚本,但实际的python环境在虚拟环境envs下,首先使用.bat批处理文件,失败。后尝试快捷方式执行,成功!
在开始菜单中找到anaconda标签,打开文件所在位置。
看到快捷方式,双击,可直接进入conda虚拟环境。
可以看到,相比我们自己打开的cmd,该链接自动进行conda虚拟环境。我们希望打开链接时自动切换到自定义的虚拟环境,还希望最好能自动切换到其它盘符,执行其中的脚本命令。
右键->属性->快捷方式,查看目标代码:
可以看到conda本身的链接也是调用cmd.exe,只是在cmd启动时增加了参数指令。完整的指令如下:
%windir%\System32\cmd.exe "/K" D:\Programs\Miniconda3\Scripts\activate.bat D:\Programs\Miniconda3
核心代码为:cmd.exe "/K" ..\activate.bat D:\Programs\Miniconda3
cmd参数意义:
cmd /c dir 是执行完dir命令后关闭命令窗口。
cmd /k dir 是执行完dir命令后不关闭命令窗口。
cmd /c start dir 会打开一个新窗口后执行dir指令,原窗口会关闭。
cmd /k start dir 会打开一个新窗口后执行dir指令,原窗口不会关闭。
这下我们明白了,相当于cmd打开了一个终端,再执行activate base。拷贝该链接,命名为test,我们对指令修改(activate torch),开始时激活torch虚拟环境:
%windir%\System32\cmd.exe "/K" D:\Programs\Miniconda3\Scripts\activate.bat D:\Programs\Miniconda3\envs\torch
双击后,确实启动时加载了torch虚拟环境:
已经成功了一半了,我们希望它启动时进入E盘,执行python hello.py命令。可以这样写:
%windir%\System32\cmd.exe "/K" D:\Programs\Miniconda3\Scripts\activate.bat D:\Programs\Miniconda3\envs\torch & E: & python hello.py
& 为cmd命令分割符号,也有用&&分隔的。至此,问题解决。
参考:
1、cmd /k的含义
cmd /k的含义_chief1985的博客-CSDN博客_cmd k