两个用来刷新Windows环境变量让会话即时生效的刷新脚本分享

环境变量刷新脚本:RefreshEnv.bat 和 RefreshEnv.ps1

在Windows系统中,环境变量对于程序的正常运行至关重要。当安装新软件或修改系统设置后,环境变量可能会发生变化,但这些变化通常需要重启命令提示符或PowerShell会话才能生效。为了解决这个问题,我们提供了两个脚本: RefreshEnv.bat (用于命令提示符和PowerShell会话) 和 RefreshEnv.ps1 (用于PowerShell),它们可以快速刷新当前会话的环境变量。

RefreshEnv.bat

这是一个批处理脚本,用于在命令提示符(cmd.exe)中刷新环境变量。

@echo off
::
:: RefreshEnv.cmd
::
:: Batch file to read environment variables from registry and
:: set session variables to these values.
::
:: With this batch file, there should be no need to reload command
:: environment every time you want environment changes to propagate::echo "RefreshEnv.cmd only works from cmd.exe, please install the Chocolatey Profile to take advantage of refreshenv from PowerShell"
echo | set /p dummy="Refreshing environment variables from registry for cmd.exe. Please wait..."goto main:: Set one environment variable from registry key
:SetFromReg"%WinDir%\System32\Reg" QUERY "%~1" /v "%~2" > "%TEMP%\_envset.tmp" 2>NULfor /f "usebackq skip=2 tokens=2,*" %%A IN ("%TEMP%\_envset.tmp") do (echo/set "%~3=%%B")goto :EOF:: Get a list of environment variables from registry
:GetRegEnv"%WinDir%\System32\Reg" QUERY "%~1" > "%TEMP%\_envget.tmp"for /f "usebackq skip=2" %%A IN ("%TEMP%\_envget.tmp") do (if /I not "%%~A"=="Path" (call :SetFromReg "%~1" "%%~A" "%%~A"))goto :EOF:mainecho/@echo off >"%TEMP%\_env.cmd":: Slowly generating final filecall :GetRegEnv "HKLM\System\CurrentControlSet\Control\Session Manager\Environment" >> "%TEMP%\_env.cmd"call :GetRegEnv "HKCU\Environment">>"%TEMP%\_env.cmd" >> "%TEMP%\_env.cmd":: Special handling for PATH - mix both User and Systemcall :SetFromReg "HKLM\System\CurrentControlSet\Control\Session Manager\Environment" Path Path_HKLM >> "%TEMP%\_env.cmd"call :SetFromReg "HKCU\Environment" Path Path_HKCU >> "%TEMP%\_env.cmd":: Caution: do not insert space-chars before >> redirection signecho/set "Path=%%Path_HKLM%%;%%Path_HKCU%%" >> "%TEMP%\_env.cmd":: Cleanupdel /f /q "%TEMP%\_envset.tmp" 2>nuldel /f /q "%TEMP%\_envget.tmp" 2>nul:: capture user / architectureSET "OriginalUserName=%USERNAME%"SET "OriginalArchitecture=%PROCESSOR_ARCHITECTURE%":: Set these variablescall "%TEMP%\_env.cmd":: Cleanupdel /f /q "%TEMP%\_env.cmd" 2>nul:: reset user / architectureSET "USERNAME=%OriginalUserName%"SET "PROCESSOR_ARCHITECTURE=%OriginalArchitecture%"echo | set /p dummy="Finished."echo .

RefreshEnv.ps1

这是一个PowerShell脚本,用于在PowerShell会话中刷新环境变量。

# RefreshEnv.ps1
#
# PowerShell脚本用于从注册表读取环境变量并设置会话变量Write-Host "正在从注册表刷新cmd.exe的环境变量。请稍候..." -NoNewlinefunction Set-FromReg {param ([string]$regPath,[string]$name,[string]$varName)$value = Get-ItemProperty -Path $regPath -Name $name -ErrorAction SilentlyContinueif ($value) {Set-Item -Path Env:$varName -Value $value.$name}
}function Get-RegEnv {param ([string]$regPath)$vars = Get-Item -Path $regPathforeach ($var in $vars.Property) {if ($var -ne "Path") {Set-FromReg $regPath $var $var}}
}# 获取系统和用户环境变量
Get-RegEnv "HKLM:\System\CurrentControlSet\Control\Session Manager\Environment"
Get-RegEnv "HKCU:\Environment"# 特殊处理PATH - 混合用户和系统路径
$path_HKLM = (Get-ItemProperty -Path "HKLM:\System\CurrentControlSet\Control\Session Manager\Environment").Path
$path_HKCU = (Get-ItemProperty -Path "HKCU:\Environment").Path
$env:Path = "$path_HKLM;$path_HKCU"# 保存原始用户名和架构
$OriginalUserName = $env:USERNAME
$OriginalArchitecture = $env:PROCESSOR_ARCHITECTURE# 重置用户名和架构
$env:USERNAME = $OriginalUserName
$env:PROCESSOR_ARCHITECTURE = $OriginalArchitectureWrite-Host "完成。"

使用方法

  1. RefreshEnv.bat:

    • 将脚本保存为RefreshEnv.bat
    • 在命令提示符中,切换到脚本所在目录
    • 运行命令: RefreshEnv.bat
  2. RefreshEnv.ps1:

    • 将脚本保存为RefreshEnv.ps1
    • 在PowerShell中,切换到脚本所在目录
    • 运行命令: .\RefreshEnv.ps1

主要功用和意义

  1. 即时更新: 这两个脚本允许用户在不重启命令行或PowerShell会话的情况下,立即更新环境变量。

  2. 提高效率: 避免了频繁重启命令行工具的需要,特别是在安装新软件或修改系统设置后。

  3. 跨平台兼容: 提供了针对cmd和PowerShell两种常用命令行环境的解决方案。

  4. 保持一致性: 确保命令行环境与系统设置保持同步,减少因环境变量不一致导致的问题。

  5. 自动化友好: 这些脚本可以轻松集成到其他自动化流程中,确保环境变量始终是最新的。

通过使用这些脚本,用户可以更加高效地管理他们的开发和系统管理工作,减少因环境变量不一致导致的问题,提高工作效率。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/62411.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

A050-基于spring boot物流管理系统设计与实现

🙊作者简介:在校研究生,拥有计算机专业的研究生开发团队,分享技术代码帮助学生学习,独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取,记得注明来意哦~🌹 赠送计算机毕业设计600…

【老白学 Java】Warship v2.0(七)

Warship v2.0(七) 文章来源:《Head First Java》修炼感悟。 上一篇文章中,Warship v2.0 项目最后一个类的完成,意味着整个项目也即将结束。 本篇文章的主要内容是编译、调试所有代码,以及进行代码整理。 如…

Elasticearch索引mapping写入、查看、修改

作者:京东物流 陈晓娟 一、ES Elasticsearch是一个流行的开源搜索引擎,它可以将大量数据快速存储和检索。Elasticsearch还提供了强大的实时分析和聚合查询功能,数据模式更加灵活。它不需要预先定义固定的数据结构,可以随时添加或修…

基于matlab程序实现人脸识别

1.人脸识别流程 1.1.1基本原理 基于YCbCr颜色空间的肤色模型进行肤色分割。在YCbCr色彩空间内对肤色进行了建模发现,肤色聚类区域在Cb—Cr子平面上的投影将缩减,与中心区域显著不同。采用这种方法的图像分割已经能够较为精确的将人脸和非人脸分割开来。…

家校通小程序实战教程04教师管理

目录 1 创建数据源2 搭建管理后台3 搭建查询条件4 功能测试总结 我们上一篇介绍了如何将学生加入班级,学生加入之后就需要教师加入了。教师分为任课老师和班主任,班主任相当于一个班级的管理员,日常可以发布各种任务,发布接龙&…

【力扣】541.反转字符串2

问题描述 思路解析 每当字符达到2*k的时候,判断,同时若剩余字符>k,只对前k个进行判断(这是重点)因为字符串是不可变变量,所以将其转化为字符串数组,最后才将结果重新转变为字符串 字符串->字符数组 …

【vue-router】Vue-router如何实现路由懒加载

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

hdlbits系列verilog解答(Exams/m2014 q4a)-86

文章目录 一、问题描述二、verilog源码三、仿真结果一、问题描述 本节学习如何下图中的锁存器电路。 注意图中电路是锁存器,因此quartus会警告说推导出一个锁存器。 模块声明 module top_module ( input d, input ena, output q); 思路: 锁存器是一种对脉冲电平敏感的存储…

成都睿明智科技有限公司抖音电商服务的新引擎

在这个短视频风起云涌的时代,抖音不仅成为了人们休闲娱乐的首选,更是商家们竞相角逐的电商新蓝海。在这片充满机遇与挑战的海域中,成都睿明智科技有限公司如同一艘装备精良的航船,引领着众多企业向抖音电商的深水区进发。今天&…

leetcode:637二叉树的层平均值

给定一个非空二叉树的根节点 root , 以数组的形式返回每一层节点的平均值。与实际答案相差 10-5 以内的答案可以被接受。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:[3.00000,14.50000,11.00000] 解释:第 0 层的平均值为 …

Java多线程介绍及使用指南

“多线程”:并发 要介绍线程,首先要区分开程序、进程和线程这三者的区别。 程序:具有一定功能的代码的集合,但是是静态的,没有启动运行 进程:启动运行的程序【资源的分配单位】 线程:进程中的…

独家|京东调整职级序列体系

原有的M、P、T、S主序列将正式合并为新的专业主序列P。 作者|文昌龙 编辑|杨舟 据「市象」独家获悉,京东已在近日在内部宣布对职级序列体系进行调整,将原有的M、P、T、S主序列正式合并为新的专业主序列P,合并后的职级体系将沿用原有专业序…

mysql 存储结构的进化之路

文章目录 前言一、线性结构二、二叉树(BST)三、平衡二叉树(AVL)四、多路平衡查找树(B Tree)五、加强版多路平衡查找树(B Tree)总结 前言 树形结构是一种具有层次关系的数据结构&…

RHCE作业五-shell脚本

一要求: 通过shell脚本分析部署nginx网络服务 1.接收用户部署的服务名称 2.判断服务是否安装 ​ 已安装;自定义网站配置路径为/www;并创建共享目录和网页文件;重启服务 ​ 没有安装;安装对应的软件包 3.测试 判断服务…

Java基础之控制语句:开启编程逻辑之门

一、Java控制语句概述 Java 中的控制语句主要分为选择结构、循环结构和跳转语句三大类,它们在程序中起着至关重要的作用,能够决定程序的执行流程。 选择结构用于根据不同的条件执行不同的代码路径,主要包括 if 语句和 switch 语句。if 语句有…

CSS新特性(11)

一.计算盒子宽度calc函数,可以用加减乘除来计算 -*/ 让父盒子永远比子盒子小30像素 二.CSS3过渡transition搭配hover一起使用 该盒子宽度可以从200px到400px,谁做变化给谁加 不仅要写宽还要写高利用逗号,多个属性一起写都用逗号 既想要宽度变又想要高度…

MacOS 配置github密钥

MacOS 配置github密钥 1. 生成GitHub的SSH密钥对 ssh-keygen -t ed25519 -C "xxxxxxx.com" -f ~/.ssh/id_ed25519_github 其中 xxxxxxxxxxx.com 是注册github、gitee和gitlab的绑定账号的邮箱 -t ed25519:生成密钥的算法为ed25519(ed25519比rsa速度快&…

linux cenos redis 单机部署

编译安装redis(Centos) 编译安装前先安装编译基础环境: yum install -y gcc gcc-c yum install -y readline-devel yum install -y zlib-devel yum -y install pcre yum -y install pcre-devel yum -y install openssl yum -y instal…

TI毫米波雷达(七)——high accurary示例分析(二)

概述 之前分析了IWR6843上的高精度测距程序框架,虽然可以看到大致的系统运行过程,但是总有一种“混乱”的感觉。TI为了展现ARM与DSP协作能力将如此“简单”的一个功能分布在多处理器上,结合BIOS以及semaphore、event、mailbox等机制&#xff…

鸿蒙修饰符

文章目录 一、引言1.1 什么是修饰符1.2 修饰符在鸿蒙开发中的重要性1.3 修饰符的作用机制 二、UI装饰类修饰符2.1 Styles修饰符2.1.1 基本概念和使用场景2.1.2 使用示例2.1.3 最佳实践 2.2 Extend修饰符2.2.1 基本概念2.2.2 使用示例2.2.3 Extend vs Styles 对比2.2.4 使用建议…