复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92# coding: utf8 """ 模块描述: Python--->Windows10永久添加环境变量, 避免1024个字符限制 问题: Windows系统提供的DOS命令, setx 添加环境变量的方法, 有1024个字符限制 诊断: 思路一: 使用追加方式添加环境变量, 但是没有找到相关命令; 思路二: 重设用户环境变量为: setx "Path" "%%Path%%;新的环境变量路径" %Path% 就代指了电脑系统的环境变量, 但是这样做会重写用户的环境变量, 不可取; 思路三: Windows系统的环境变量, 都有 C:windows 这个路径, 只要在这个路径的文件夹下, 将新的环境变量路径下的所有文件, 文件夹, 都软链接到 C:windows 下, 就相当于有了新的环境变量; 可行, 软链接一般不占空间, 注意的点: C:windows 一般需要管理员权限, 所以需要在bat命令中, 首先加上几行代码, 获取管理员权限; 目前, 思路三是处方. """ import os import subprocess get_administrator_rights_cmd_str = """ @echo off CLS :init setlocal DisableDelayedExpansion set "batchPath=%~0" for %%k in (%0) do set batchName=%%~nk set "vbsGetPrivileges=%temp%OEgetPriv_%batchName%.vbs" setlocal EnableDelayedExpansion :checkPrivileges NET FILE 1>NUL 2>NUL if '%errorlevel%' == '0' ( goto gotPrivileges ) else ( goto getPrivileges ) :getPrivileges if '%1'=='ELEV' (echo ELEV & shift /1 & goto gotPrivileges) ECHO Set UAC = CreateObject^("Shell.Application"^) > "%vbsGetPrivileges%" ECHO args = "ELEV " >> "%vbsGetPrivileges%" ECHO For Each strArg in WScript.Arguments >> "%vbsGetPrivileges%" ECHO args = args ^& strArg ^& " " >> "%vbsGetPrivileges%" ECHO Next >> "%vbsGetPrivileges%" ECHO UAC.ShellExecute "!batchPath!", args, "", "runas", 1 >> "%vbsGetPrivileges%" "%SystemRoot%System32WScript.exe" "%vbsGetPrivileges%" %* exit /B :gotPrivileges setlocal & pushd . cd /d %~dp0 if '%1'=='ELEV' (del "%vbsGetPrivileges%" 1>nul 2>nul & shift /1) """ def set_env(target_dir_path): """ 功能: 给Windows系统添加环境变量, Windows系统版本不能太低, 要支持软链接 :param target_dir_path: 目标文件夹路径, 就是要添加到环境变量的文件夹路径 :return: """ # 创建一个bat文件, 来跑命令 bat_file_path = os.path.join(os.getcwd(), "set_windows_env.bat") with open(bat_file_path, "w") as f: # 首先要获取管理员权限 f.write(get_administrator_rights_cmd_str) for file_name in os.listdir(target_dir_path): file_path = os.path.join(target_dir_path, file_name) if os.path.isdir(file_path): # 是文件夹, 那么就创建文件夹的软链接 cmd_str = "mklink /d C:windows{} {}n".format(file_name, file_path) elif os.path.isfile(file_path): # 是文件, 那么就创建文件的软链接 cmd_str = "mklink C:windows{} {}n".format(file_name, file_path) f.write(cmd_str) subprocess.run(bat_file_path, shell=True) if __name__ == "__main__": set_env(r"F:test_env")
最后
以上就是坦率老鼠最近收集整理的关于Windows10永久添加环境变量---避免1024个字符限制的全部内容,更多相关Windows10永久添加环境变量---避免1024个字符限制内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复