应设置路径变量的批处理脚本会破坏字符串

应设置路径变量的批处理脚本会破坏字符串

我尝试在 win-batch-script 中通过 setx 设置用户路径变量,但它不断中断。我输入的路径...

setx path "%path%;%ProgramFiles%\Pseudocode\"

...导致这一点:

我的用户路径变量的图像,其中最后一个只读“C:\Prog”

遗憾的是,我在网上找不到任何东西,以管理员身份运行脚本也没有任何区别。

  1. 我如何确保每个人都可以下载并运行该脚本并添加完整路径?

    或者

  2. 是否有其他方法可以在 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

相关内容