吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 534|回复: 8
收起左侧

[求助] C++ system() 命令 修改当前运行环境变量

[复制链接]
xiao-bai-shu 发表于 2024-11-3 03:41
最近因为 conda 的命令太长,用起来不顺手,bat 的文本处理功能又太鸡肋,用 C++ 写了个 kd.exe,主要功能如下:
kd a = conda activate
kd d = conda deactivate
kd s <...> 退出所有嵌套环境直至 base,然后再激活指定环境
kd <other_commands>:执行 conda other_commands
但是只有 kd list,kd create 等不修改环境变量的命令有效。conda.exe 修改的环境变量和文件未知,我也没有必要重新实现一个 conda.exe。
命令执行语句是 system("call conda " + command)
如何才能使 system() 命令能够将所有改变应用到执行 kd.exe 的命令行进程?

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
为之奈何? + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

三滑稽甲苯 发表于 2024-11-3 08:19
这种小功能一般来说用 shell 脚本更加合适
lipingtao 发表于 2024-11-3 10:11
0Ling0 发表于 2024-11-3 13:10
重新启动程序?窗口重新创建session会刷新环境变量
 楼主| xiao-bai-shu 发表于 2024-11-3 13:39
三滑稽甲苯 发表于 2024-11-3 08:19
这种小功能一般来说用 shell 脚本更加合适

但是 Windows 平台 batch 很难用,PowerShell 脚本使用起来也不方便(主要是我不太会写 ps 脚本,而且平时我用的终端都是 cmd)
你好,再见 发表于 2024-11-3 14:26
system()相当于使用cmd执行命令,默认目录是当前程序的运行目录,你试试cd到conda环境的目录下再执行命令呢
狄人3 发表于 2024-11-3 23:26
linux下的话有个setenv,参考https://man7.org/linux/man-pages/man3/setenv.3.html,但是这个能不能在Windows下工作我没试过
 楼主| xiao-bai-shu 发表于 2024-11-6 23:19
狄人3 发表于 2024-11-3 23:26
linux下的话有个setenv,参考https://man7.org/linux/man-pages/man3/setenv.3.html,但是这个能不能在Wind ...

但是我并不想接管 conda.exe 的工作,我只是想写一个别名脚本,其实可以直接自己编译 conda,反正是开源软件。
NetheRock 发表于 2024-11-12 01:18
能不能直接将承载conda的cmd.exe作为子进程然后重定向输出到父进程,并由父进程kd.exe来和用户交互?这样应该就不用考虑环境变量了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 12:01

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表