我是靠谱客的博主 坦率老鼠,最近开发中收集的这篇文章主要介绍Windows10永久添加环境变量---避免1024个字符限制,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

# 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个字符限制所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(64)

评论列表共有 0 条评论

立即
投稿
返回
顶部