notepad可以调用cmd运行python,cmder却不行
notepad吧
全部回复
仅看楼主
level 1
者之_ 楼主
如题,
调用cmd的命令为 cmd /k python "$(FULL_CURRENT_PATH)" & PAUSE & EXIT
成功运行
安装cmder后,cmder可以正常使用,但是无法无法通过notepad调用 cmder /k python "$(FULL_CURRENT_PATH)" & PAUSE & EXIT
报错图贴二楼
逐个删参数发现, 是 ' /k ' 导致,但不知道如何解决,希望吧友们能给个参考
2018年09月12日 08点09分 1
level 1
者之_ 楼主
2018年09月12日 08点09分 2
level 1
者之_ 楼主
后来又安装了 git bash
还是不知道如何去调用它
2018年09月12日 08点09分 3
有思路吗?不胜感激
2018年09月12日 08点09分
level 1
者之_ 楼主
更新一下进度,
/k 的问题解决了,需要变更为 /START
但是进入cmder后,显示 系统找不到指定的路径
猜测可能是 cmd 和 cmder的 跳转路径语法问题
2018年09月12日 08点09分 4
level 13
cmder用的是conemu,可以设置自身环境变量。
2018年09月12日 14点09分 5
你好,谢谢解答, 是在 Setting >> Startup >>Environment 中设置PASH么,(尝试了一下,能跳启动目录,但是打不开文件) 那在notepad中,运行 中所填写的命令应该是在 cmder 中执行的吧, 不过cmder 中 貌似没有 FULL_CURRENT_PATH 这个变量
2018年09月13日 01点09分
找到一个临时方案了,设定task 的命令,虽有缺陷,不过勉强能用,谢谢你给的思路
2018年09月13日 05点09分
@者之_ 当时也碰到这问题,估摸了一下估计要写个脚本解决,怕麻烦干脆用conemu算了。conemu是可以带参数直接启动第三方程序的。cmder用了太多初始化脚本,启动就比conemu慢一步
2018年09月13日 06点09分
感觉cmder唯一多出的有用功能就是关闭控制台后再次重启的时候,命令历史记录还在。介面什么的,完全可以在conemu中配置一下就和cmder一样了
2018年09月13日 06点09分
level 1
者之_ 楼主
折腾半天, 通过迂回的方式解决了
cmder有 task(工作状态)的设定,
notepad下 运行 命令为 cmder /task "Cmder as Admin"
task 设定为 *cmd /k python "E:\cmder\test.py" & PAUSE & EXIT -new_console
这样,点运行,会运行我指定的文件(缺点是不灵活,换了文件就要重新设定命令,目前还不知道 当前目录文件的变量是啥)
2018年09月13日 05点09分 6
level 13
C:\downloads\cmder_mini\Cmder.exe /task {cmd::Cmder}&"C:\npMingw64\mingw\bin\python3.exe $(FULL_CURRENT_PATH) &echo "
有点小瑕疵,看图,运行完会有一个}.cmder默认脚本带的~
如果把echo换成C:\downloads\cmder_mini\vendor\init.bat就完美了,不过又多了一次初始化(浪费时间)
以上命令在np++中实测通过,所有路径都可以换算成相对路径便于携带,注意echo "的空格
还有,这样搞应该不支持含空格文件名。在批处理文件中支持空格名,双引号嵌套会烦的要死,不折腾了
2018年09月14日 02点09分 7
谢谢解答, 因为我都有设环境变量, 精简的命令是这样的 cmder /task {cmd::Cmder}&"python $(FULL_CURRENT_PATH) " 在测试中发现,加不加 &echo 结果无差异, 它有什么特殊意义吗 另外用上面命令测试很正常,并没有后面跟一个 } 的情况
2018年09月14日 03点09分
还有一个挺有趣的地方是, 最后一个引号前的空格竟然是必须的,没空格提示文件不存在(它提示的路径还是对的)
2018年09月14日 03点09分
@者之_ 你这是利用python.exe运行脚本时不接收第二个参数把}给忽略掉了。嗯,这里用的确很妙。不过如果是能接收多参数的程序就会出错了。能用就好,我这也学到了。空格是为了规避傻瓜脚本的错误,让}变成下一个参数。
2018年09月14日 04点09分
echo也是为了规避错误,你用的python,象你这样写应该是最简洁也正确的了。能用就好[真棒]
2018年09月14日 04点09分
level 13
上楼我说过}是cmder初始化脚本带的,这应该算是个bug.我刚才想了一下,也许可以Cmder.exe /task {cmd::Cmder}&"python3 $(FULL_CURRENT_PATH) &echo>nul "这样就能把最后空格后的}忽略掉,或者用pause之类不带参数的替换掉echo也应该可以。知道了cmder在命令前后自动加{}那怎解决随意
2018年09月14日 06点09分 8
刚发现python也和gcc一样是多参数运行的说(本人才学python没几天)~这样你上楼的命令在某些情况下可能会有问题。先试着用吧,用不着太折腾,不值得为这花大力气撒~
2018年09月14日 06点09分
好的,谢谢, 刚才尝试了 echo>nul 和 pause>nul ,全都有效, 前者有点颠覆我的认知了, 一直以为 echo>nul 只会将命令前面的输出导向到nul ,没想到 命令后面的也归它管
2018年09月14日 07点09分
1