我尝试在 win-batch-script 中通过 setx 设置用户路径变量,但它不断中断。我输入的路径...
setx path "%path%;%ProgramFiles%\Pseudocode\"
...导致这一点:
遗憾的是,我在网上找不到任何东西,以管理员身份运行脚本也没有任何区别。
我如何确保每个人都可以下载并运行该脚本并添加完整路径?
或者
是否有其他方法可以在 cmd 中注册“自定义内部控制台”(如 java、git、vsce、npm)而不使用路径变量?
我试图添加一个 powershell 脚本并执行该脚本而不是调用setx
...
$newPath = $env:Path + '%ProgramFiles%\Pseudocode\;'
[Environment]::SetEnvironmentVariable("Path", $newPath, "Machine")
$env:Path = $newPath
...但这没有起作用。(执行脚本时,没有任何变化。)
答案1
%path% 变量的最大长度限制为 1024 个字符,您可能已经达到此限制,因此 C:\Prog 之后的其余部分被截断了......
答案2
您正遇到 PATH 环境变量中可拥有的条目的最大长度限制。
请记住,PATH 环境唯一的作用是允许您从任何地方运行命令,它也会搜索这些文件夹。
您可以通过找出旧式 DOS 名称来缩短路径,然后编辑路径并更改它们。这在您的系统上有效,但在其他系统上会成为问题。如果您想在您的系统上执行此操作,请按照以下方法查找。
cd /d c:\
dir /x
这将向你显示如下内容:
C:\>dir /x
Volume in drive C has no label.
Volume Serial Number is 1C0C-DB56
Directory of C:\
07-12-2019 10:14 <DIR> PerfLogs
20-02-2022 15:10 <DIR> PROGRA~1 Program Files
08-03-2022 17:47 <DIR> PROGRA~2 Program Files (x86)
09-03-2022 14:53 <DIR> temp
14-11-2021 19:27 <DIR> Users
04-03-2022 21:11 <DIR> Windows
0 File(s) 0 bytes
6 Dir(s) 509.363.785.728 bytes free
C:\>
您可以在所有路径行中用完整的“ C:\Program Files (x86)\...
by”替换C:\PROGRA~2\...
,其他带空格或长度超过 8 个字符的文件夹也将使用缩短的名称。
完成后,您可以将条目添加到路径中,但建议使用简短版本,可能是:C:\PROGRA~1\Pseudo~1
现在,也就是说……鉴于该路径仅用于能够从任何地方运行程序,因此它会搜索该路径,如果您始终引用程序的完整路径,则实际上不需要在路径环境中包含条目。可以这样做,例如:%ProgramFiles%\Pseudocode\myprogram.exe