- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试将当前目录(从命令行)永久添加到 Windows 路径,但在实现此操作时遇到严重问题。
我最初的尝试是:
set PATH=%PATH%;%cd%
但是,这仅在当前 session 中有效;一旦我关闭命令行窗口,PATH
环境变量就会保留其以前的值。
接下来,我尝试了:
setx PATH=%PATH%;%cd%
根据我在此处找到的一些答案,这可能适用于 Windows 7 和 8,但在 Windows 10 中,setx
命令具有三种工作方式:
Syntax 1:
SETX [/S system [/U [domain\]user [/P [password]]]] var value [/M]
Syntax 2:
SETX [/S system [/U [domain\]user [/P [password]]]] var /K regpath [/M]
Syntax 3:
SETX [/S system [/U [domain\]user [/P [password]]]]
/F file {var {/A x,y | /R x,y string}[/M] | /X} [/D delimiters]
长话短说,我无法让它工作:
ERROR: Invalid syntax. Default option is not allowed more than '2' time(s).
如何以最简单的方式完成我的目标?
如果每个 Windows 版本都有不同的语法,那么我也很乐意获得此信息。
最佳答案
通过简单地使用覆盖或附加存储在注册表中的PATH
的文件夹路径来从批处理文件中修改系统或用户 PATH
是不好的本地 PATH
,如 Why are other folder paths also added to system PATH with SetX and not only the specified folder path? 的答案中详细描述
此任务的一种解决方案是将当前目录路径添加到用户 PATH
是使用以下代码:
@echo off
setlocal EnableExtensions DisableDelayedExpansion
for /F "skip=2 tokens=1,2*" %%G in ('%SystemRoot%\System32\reg.exe query "HKEY_CURRENT_USER\Environment" /v "Path" 2^>nul') do (
if /I "%%G" == "Path" (
set "UserPath=%%I"
if defined UserPath goto CheckPath
)
)
set "UseSetx=1"
if not "%CD:~1024,1%" == "" set "UseSetx="
if not exist %SystemRoot%\System32\setx.exe set "UseSetx="
if defined UseSetx (
%SystemRoot%\System32\setx.exe Path "%CD%" >nul
) else (
%SystemRoot%\System32\reg.exe ADD "HKCU\Environment" /f /v Path /t REG_SZ /d "%CD%" >nul
)
endlocal
exit /B
:CheckPath
setlocal EnableDelayedExpansion
if "!UserPath:~-1!" == ";" (set "Separator=") else "Separator=;"
set "PathCheck=!UserPath!%Separator%"
if not "!PathCheck:%CD%;=!" == "!PathCheck!" goto EndBatch
if not "!PathCheck:%CD%\;=!" == "!PathCheck!" goto EndBatch
set "PathToSet=!UserPath!%Separator%%CD%"
set "UseSetx=1"
if not "!PathToSet:~1024,1!" == "" set "UseSetx="
if not exist %SystemRoot%\System32\setx.exe set "UseSetx="
if defined UseSetx (
%SystemRoot%\System32\setx.exe Path "!PathToSet!" >nul
) else (
set "ValueType=REG_EXPAND_SZ"
if "!PathToSet:%%=!" == "!PathToSet!" set "ValueType=REG_SZ"
%SystemRoot%\System32\reg.exe ADD "HKCU\Environment" /f /v Path /t !ValueType! /d "!PathToSet!" >nul
)
:EndBatch
endlocal
endlocal
此解决方案的缺点是用户 PATH
最终成为 C:\Temp;C:\Temp\Other Folder;C:\Temp\One More Folder
(当当前目录是第一个 C:\Temp
时,在下次运行批处理文件时 C:\Temp\Other Folder
和 C:\Temp\One More Folder
在第三次执行批处理文件时。
避免这种情况的解决方案是在下一个批处理文件 MyAppPath
中定义一个特定于应用程序的环境变量,该变量在执行批处理文件时始终会被覆盖。如果 user PATH
中尚不存在对环境变量 MyAppPath
的引用,则仅向 user PATH
添加对环境变量 PATH
的引用。
@echo off
setlocal EnableExtensions DisableDelayedExpansion
set "UseSetx=1"
if not "%CD:~1024,1%" == "" set "UseSetx="
if not exist %SystemRoot%\System32\setx.exe set "UseSetx="
if defined UseSetx (
%SystemRoot%\System32\setx.exe MyAppPath "%CD%" >nul
) else (
%SystemRoot%\System32\reg.exe ADD "HKCU\Environment" /f /v MyAppPath /t REG_SZ /d "%CD%" >nul
)
set "UserPath="
for /F "skip=2 tokens=1,2*" %%G in ('%SystemRoot%\System32\reg.exe query "HKEY_CURRENT_USER\Environment" /v "Path" 2^>nul') do (
if /I "%%G" == "Path" (
set "UserPath=%%I"
if defined UserPath goto CheckPath
)
)
if exist %SystemRoot%\System32\setx.exe (
%SystemRoot%\System32\setx.exe Path "%%MyAppPath%%" >nul
) else (
%SystemRoot%\System32\reg.exe ADD "HKCU\Environment" /f /v Path /t REG_EXPAND_SZ /d "%%MyAppPath%%" >nul
)
endlocal
exit /B
:CheckPath
setlocal EnableDelayedExpansion
if "!UserPath:~-1!" == ";" (set "Separator=") else set "Separator=;"
if "!UserPath:%%MyAppPath%%=!" == "!UserPath!" (
set "PathToSet=!UserPath!%Separator%%%MyAppPath%%"
set "UseSetx=1"
if not "!PathToSet:~1024,1!" == "" set "UseSetx="
if not exist %SystemRoot%\System32\setx.exe set "UseSetx="
if defined UseSetx (
%SystemRoot%\System32\setx.exe Path "!PathToSet!" >nul
) else (
%SystemRoot%\System32\reg.exe ADD "HKCU\Environment" /f /v Path /t REG_EXPAND_SZ /d "!PathToSet!" >nul
)
)
endlocal
endlocal
在这种情况下,存储在注册表中的用户 %MyAppPath%
始终仅包含 MyAppPath
,并且注册表值的类型为 REG_EXPAND_SZ。环境变量 MyAppPath
的值也存储在注册表中,但类型为 REG_SZ。 PATH
的值在每次执行批处理文件时更新为当前目录路径。因此,每次从不同文件夹执行批处理文件时,注册表中的用户 PATH
不会变得越来越长。
一般来说,如果应用程序或应用程序套件的应用程序文件夹或其子文件夹之一在执行应用程序或套件中的任何应用程序时必须位于本地 App Paths
中才能正常工作,则该应用程序或应用程序套件的编码不好全部。应用程序或应用程序套件还可以将其安装路径存储在注册表中的其他位置,例如 %APPDATA%
或 PATH
子文件夹中的文件(用户帐户相关的标准应用程序数据路径),下次运行时可以从中读取它。仅当此应用程序很可能主要由用户在命令提示符窗口中执行时,安装程序包才应修改用户或系统 echo /?
。
要了解所使用的命令及其工作原理,请打开 command prompt 窗口,在其中执行以下命令,并完整、仔细地阅读每个命令显示的帮助页面。
endlocal /?
exit /?
for /?
goto /?
if /?
reg /?
reg add /?
reg query /?
set /?
setlocal /?
setx /?
>nul
还应阅读以下内容:
App Paths
。PATH
的详细信息。关于batch-file - 将当前目录永久添加到 Windows 路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47070156/
BufferedImage image = ImageIO.read(SpriteSheet.class.getResource(path)); BufferedImage image = Image
希望有人能够帮助我解决将我的 React 应用程序推送到 Heroku 时遇到的问题。 heroku 日志反复显示以下错误。 at=error code=H10 desc="App crashed"
我是 Kotlin 的新手,我正在经历这样的例子。 . . package com.example.lambda1 import spark.Spark.get fun main(args: Arra
如果您已经安装了 32 位 JDK,请在中定义一个 JAVA_HOME 变量 Computer>System Properties>System Setting>Enviorment VAriable
我正在开发一个独立于平台的应用程序。我收到一个文件 URL*。在 Windows 上,这些是: file:///Z:/folder%20to%20file/file.txt file://host/f
我在 OSX、Objective-C 上。 我有一个像 这样的路径/NSURL /Users/xxx/Desktop/image2.png 但我将它传递给第三方应用程序,该应用程序会像 excpect
我已经安装了 Android studio 和插件的 DART,FLUTTER 来启动 flutter,但是因为我在创建我的第一个 flutter 项目时无法提供 sdk 路径。 最佳答案 我试图找出
127.0.0.1:8000/api/仅包含来自第二个应用程序的 url,但我将两个 url 模块链接到相同的模式。甚至有可能做到这一点吗? 第一个应用程序: from django.urls imp
对于大量图像(大约 1k,加上相同数量的拇指,在大约 500 个文件夹中),我们要求网站上使用的所有图像 URI 都必须具有 SEO 优化路径。它们已经准备好并提供完整的路径结构(每个文件夹包含一个具
为什么 f 不是一个文件?什么可能导致这种情况? String currentPhotoPath = "file:/storage/sdcard0/Pictures/someFileName.
Gradle 中的项目名称或路径中允许使用哪些字符? 它是否与特定操作系统的目录名称中允许的字符相同(例如: http://en.wikipedia.org/wiki/Filename#Reserve
我有一个包含文件夹路径的表格。我需要找到层次结构中这些文件夹之间的所有“差距”。我的意思是,如果表格包含这 3 个文件夹: 'A' 'A\B\C' 'A\B\C\D\E\F\G' 我需要在层次结构中找
我在 Linux 服务器上的/home/subversion 中安装了 svn - 那里有一个 ROOT 文件夹,其中包含 db 和 conf 等文件夹。没有映射到项目名称的文件夹,请有人告诉我如何列
对于我的图像位置:/src/assets/bitmap/sample.jpg 给出了关键配置: context: resolve('src') output: { path: resolve('b
我需要创建带有圆角的 SVG 路径,以将它们导出到 DXF 进行切割。我的问题是角应该是圆弧,而不是贝塞尔曲线。 使用 arc 命令相对容易处理直角,因为半径也是从拐角到圆弧起点的距离。对于其他角度,
大家好,我正在玩 Airflow,我正在阅读这篇很有帮助的 tutorial .我正在寻求帮助以更好地了解 Admin->Connection 如何在 Conn Type: File (path) 方
我的目标是定义R将用于安装和搜索库的单个路径。我read可以通过更改Rprofile.site安装路径中的R文件来完成。我在那里尝试了两个命令: .libPaths("D:/RLibrary") .L
我有一个问题:当我在一个页面中时,我想返回到上一页。我使用 $routeProvider。如何读取之前的 url? 我尝试在我的 Controller 中使用此代码但不起作用... angular.m
我正在尝试将一个文件从我的主干合并到一个分支(wc),并且对于看起来位于当前合并操作中不涉及的分支上的路径出现奇怪的未找到路径错误。 例如,在我们的 svn 项目中,我们有: 分行 分支 0 分支 1
我有一个树数据序列化如下: 关系:P到C是“一对多”,C到P是“一对一”。所以列 P 可能有重复的值,但列 C 有唯一的值。 P, C 1, 2 1, 3 3, 4 2, 5 4, 6 # in da
我是一名优秀的程序员,十分优秀!