缘起
想使用 notepad 打开记事本一样,打开heynote,结果一时手贱错点删掉了一个用户变量,想不起来是哪一个程序路径了,为此写一个配置用户变量的脚本,方便以后省事。
功能设计
由于我不想管那么多,大多数情况都是加 PATH 上,所以用户、系统环境变量都加上,也没在想着去单独创建变量。
- 读取计算机/用户 Path,将变量值导出成txt到桌面
- 保留以前的Path,在这基础上追加,而不是覆盖掉整个Path
- 再次追加时,不会出现相同的路径重复追加。
- 追加导出位置提醒(代码效果测试完成后才想起)
效果
示例路径
- "C:\Program Files\Heynote\"
- "D:\hitomi\"
- "C:\Program Files\ToDesk"
附源码
powershell
# 接受用户输入的新路径
$newPath = Read-Host "请输入要添加的新路径"
# 获取桌面路径
$desktopPath = [Environment]::GetFolderPath("Desktop")
# 备份当前用户的 PATH 环境变量到桌面的文本文件
$currentUserPath = [Environment]::GetEnvironmentVariable("PATH", "User")
$currentUserPath | Out-File -FilePath "$desktopPath\user_path_backup.txt"
# 如果新路径不存在于当前用户的 PATH 环境变量中,则添加新路径
if ($currentUserPath -notlike "*$newPath*") {
$currentUserPath += ";$newPath"
[Environment]::SetEnvironmentVariable("PATH", $currentUserPath, [System.EnvironmentVariableTarget]::User)
}
# 备份计算机的 PATH 环境变量到桌面的文本文件
$systemPath = [Environment]::GetEnvironmentVariable("PATH", "Machine")
$systemPath | Out-File -FilePath "$desktopPath\system_path_backup.txt"
# 如果新路径不存在于计算机的 PATH 环境变量中,则添加新路径
if ($systemPath -notlike "*$newPath*") {
$systemPath += ";$newPath"
[Environment]::SetEnvironmentVariable("PATH", $systemPath, [System.EnvironmentVariableTarget]::Machine)
}
# 提示修改完成
Write-Host "环境变量已修改"
Write-Host "用户变量备份在桌面的 user_path_backup.txt 文件中"
Write-Host "系统变量备份在桌面的 system_path_backup.txt 文件中"
Write-Host `n;
# 显示修改后的 PATH 环境变量
Write-Host "修改后的计算机 PATH 环境变量:"
[Environment]::GetEnvironmentVariable("PATH", "Machine")
Write-Host `n;
Write-Host "修改后的用户 PATH 环境变量:"
[Environment]::GetEnvironmentVariable("PATH", "User")
bat
@echo off
REM 提示用户输入新路径
set /p newPath=请输入要添加的新路径:
REM 获取桌面路径
set "desktopPath=%userprofile%\Desktop"
REM 备份当前用户的 PATH 环境变量到桌面的文本文件
powershell -Command "[Environment]::GetEnvironmentVariable('PATH', 'User')" > "%desktopPath%\user_path_backup.txt"
REM 如果新路径不存在于当前用户的 PATH 环境变量中,则添加新路径
powershell -Command "$currentUserPath = [Environment]::GetEnvironmentVariable('PATH', 'User'); if ($currentUserPath -notlike '*%newPath%*') { $currentUserPath += ';%newPath%'; [Environment]::SetEnvironmentVariable('PATH', $currentUserPath, [System.EnvironmentVariableTarget]::User) }"
REM 备份计算机的 PATH 环境变量到桌面的文本文件
powershell -Command "[Environment]::GetEnvironmentVariable('PATH', 'Machine')" > "%desktopPath%\system_path_backup.txt"
REM 如果新路径不存在于计算机的 PATH 环境变量中,则添加新路径
powershell -Command "$systemPath = [Environment]::GetEnvironmentVariable('PATH', 'Machine'); if ($systemPath -notlike '*%newPath%*') { $systemPath += ';%newPath%'; [Environment]::SetEnvironmentVariable('PATH', $systemPath, [System.EnvironmentVariableTarget]::Machine) }"
REM 提示修改完成
echo 环境变量已修改
echo 用户变量备份在桌面的 user_path_backup.txt 文件中
echo 系统变量备份在桌面的 system_path_backup.txt 文件中
echo.
REM 显示修改后的 PATH 环境变量
echo 修改后的计算机 PATH 环境变量:
powershell -Command "[Environment]::GetEnvironmentVariable('PATH', 'Machine')"
echo.
echo 修改后的用户 PATH 环境变量:
powershell -Command "[Environment]::GetEnvironmentVariable('PATH', 'User')"
pause
参考文献
|