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 只设置一次路径_Batch File_Scripting_Cmd - Fatal编程技术网

Batch file 只设置一次路径

Batch file 只设置一次路径,batch-file,scripting,cmd,Batch File,Scripting,Cmd,问题:在批处理脚本中将文件夹添加到系统路径中一次的简单可靠方法是什么 我需要将文件夹永久添加到路径。但我只想添加一次,即使我多次运行脚本 尝试:我很乐意将文件夹添加到环境和注册表中的路径中: SETX /m PATH "%PATH%;%MyFolder%" SET PATH=PATH;%MyFolder% 但是我需要保证它不会在每次运行时将相同的文件夹添加到path变量中。我的第一个想法是比较字符串以检查它是否已经包含文件夹,但我需要语法方面的帮助: 或者有更好的方法吗?这里有一个简单的例程,

问题:在批处理脚本中将文件夹添加到系统路径中一次的简单可靠方法是什么

我需要将文件夹永久添加到路径。但我只想添加一次,即使我多次运行脚本

尝试:我很乐意将文件夹添加到环境和注册表中的路径中:

SETX /m PATH "%PATH%;%MyFolder%"
SET PATH=PATH;%MyFolder%
但是我需要保证它不会在每次运行时将相同的文件夹添加到path变量中。我的第一个想法是比较字符串以检查它是否已经包含文件夹,但我需要语法方面的帮助:


或者有更好的方法吗?

这里有一个简单的例程,它只检查是否已经列出了确切的路径,如果没有找到,则将其添加到路径中

@echo off
call :AppendMachinePATH "%MyFolder%"
exit /b 0

:AppendMachinePATH <Path to Add>
for %%A in ("%PATH:;=" "%") do if /i "%%~A"=="%~1" exit /b 1
setx /m PATH "%PATH%;%MyFolder%"
set "PATH=%PATH%;%MyFolder%"
exit /b 0
@echo关闭
调用:AppendMachinePATH“%MyFolder%”
退出/b0
:AppendMachinePATH
对于(“%PATH:;=”“%”)中的%%A,如果/i“%%~A”==“%%~1”退出/b 1,则执行该操作
setx/m路径“%PATH%”;%MyFolder%”
设置“路径=%PATH%;%MyFolder%”
退出/b0

(从内存中写入,未经测试)

这几乎是的副本。有关检测现有路径的可靠方法,请参阅。@dbenham您的答案非常有用。我现在正在使用
inPath
来完成这项繁重的工作,效果非常好。我不知道该怎么回答这个问题,不过。。。
@echo off
call :AppendMachinePATH "%MyFolder%"
exit /b 0

:AppendMachinePATH <Path to Add>
for %%A in ("%PATH:;=" "%") do if /i "%%~A"=="%~1" exit /b 1
setx /m PATH "%PATH%;%MyFolder%"
set "PATH=%PATH%;%MyFolder%"
exit /b 0