Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 使用Setx don';行不通_Batch File_Path_Setx - Fatal编程技术网

Batch file 使用Setx don';行不通

Batch file 使用Setx don';行不通,batch-file,path,setx,Batch File,Path,Setx,在.bat脚本中,我想在PATH用户变量中添加一个特定的目录列表 最初,路径如下所示: C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files\Novell\iPrint;C:\Program Files\WindowsPowerShell\Scripts\HP.

在.bat脚本中,我想在PATH用户变量中添加一个特定的目录列表

最初,路径如下所示:

C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files\Novell\iPrint;C:\Program Files\WindowsPowerShell\Scripts\HP.ClientScriptLibrary;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Program Files\dotnet\;C:\Program Files (x86)\Yarn\bin\;C:\Program Files\Docker\Docker\resources\bin;C:\ProgramData\DockerDesktop\version-bin;C:\Users\myuser\AppData\Local\Microsoft\WindowsApps;C:\Program Files (x86)\Graphviz2.38\bin;
我使用以下命令:

setx WAC_PATH "c:\mydir1;c:\mydir2"
setx Path "%Path%;%%WAC_PATH%%"
我之所以使用“%%”,是因为我想将我的新目录分组到一个变量(WAC_PATH)中,并直接使用到PATH变量中

因此,在用户环境变量中正确定义了WAC_路径。但是,路径改变了:许多初始配置重复出现,我有几个C:\WINDOWS和C:\WINDOWS/SYSTEM32

C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files\Novell\iPrint;C:\Program Files\WindowsPowerShell\Scripts\HP.ClientScriptLibrary;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Program Files\dotnet\;C:\Program Files (x86)\Yarn\bin\;C:\Program Files\Docker\Docker\resources\bin;C:\ProgramData\DockerDesktop\version-bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files\Novell\iPrint;C:\Program Files\WindowsPowerShell\Scripts\HP.ClientScriptLibrary;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Program Files\dotnet\;C:\Program Files (x86)\Yarn\bin\;C:\Program Files\Docker\Docker\resources\bin;C:\ProgramData\DockerDesktop\version-bin;C:\Users\myuser\AppData\Local\Microsoft\WindowsApps;C:\Program Files (x86)\Graphviz2.38\bin;;C:\WINDOWS;C:\WINDOWS\System32;C:\WINDOWS;C:\WINDOWS\System32;C:\WINDOWS;C:\WINDOWS\System32;C:\WINDO
我认为变量WAC_PATH被添加到PATH的末尾,但长度超过1024

为什么所有这些值都是重复的(我应该有初始路径值,最后只引用WAC_路径)?

谢谢Mofi


我已经检查了你的链接以清理路径,对我来说没问题。

看起来很奇怪。您原来的
路径
设置似乎被解析为~508个字符,并且没有明显的
c:\mydir1;c:\mydir2
在您的“after”版本中,它似乎复制了前415个字符,并且
;C:\WINDOWS;C:\WINDOWS\System32
重复追加。我建议您使用
regedit32
阅读
path
wac_path
的实际定义,如果问题似乎无法解决,请编辑您的问题以包含这些实际定义。您不应使用
setx.exe
修改
%path%
环境变量的值数据。原因是与其他变量不同,
%Path%
值的特殊性在于它的值是系统
%Path%
变量值和用户
%Path%
变量值的内容。因此,您的命令正在将系统变量的所有内容添加到您的用户变量,从而复制所有这些内容。谢谢,我理解得更好。是否有一种方法可以更新bat脚本中的PATH变量(user)?请参见和,对于相反的内容,您必须首先根据修复您的用户
PATH
环境变量。注意:将一个或多个文件夹路径直接或通过不同的环境变量添加到用户或系统
Path
的唯一原因是,安装了批处理文件的应用程序或脚本主要由用户在命令提示窗口中执行,只需输入其文件名。没有好的编码应用程序/脚本取决于除Windows默认值之外的
Path
中的文件夹。