信息:在执行 `where git` 时找不到给定模式的文件
Posted
技术标签:
【中文标题】信息:在执行 `where git` 时找不到给定模式的文件【英文标题】:INFO: Could not find files for the given pattern(s) doing `where git` 【发布时间】:2021-10-24 15:19:32 【问题描述】:我在C:\Program Files\Git\
下安装了 git 我从setupenv.bat
执行以下操作:
set PATH="C:\Program Files\Git\bin";%PATH%
所以执行以下操作我可以看到它:
echo %PATH%
以下将起作用:
git --version
>git version 2.21.0.windows.1
但这不会:
where git
>INFO: Could not find files for the given pattern(s)
【问题讨论】:
我认为这是因为您使用了不应该存在的双引号。Path
位置以分号分隔,因此您不应双引号 git
位置。尝试将set PATH="C:\Program Files\Git\bin";%PATH%
更改为Set PATH=C:\Program Files\Git\bin;%PATH%
或更正确的Set "Path=%Path%C:\Program Files\Git\bin;"
。反而。此外,不要使用惰性输入,并允许解析器搜索并将%PATHEXT%
下列出的每个扩展名附加到您的文件名,使用git.exe
,它总是会运行得更快。
确实这是答案,我很高兴确认它解决了问题。你能把它作为一个正确的答案吗?
【参考方案1】:
问题很可能是您的位置字符串用双引号括起来。
%Path%
字符串值内容中列出的位置用分号分隔,因此不应将您打算添加到该值内容的内容用双引号括起来。
如果您查看现有的%Path%
内容,在命令提示符下键入Path
,然后按ENTER 键,您会注意到没有双引号,并且很可能存在包含空格字符的路径。
因此,解决方案是将您的set
命令从:
set PATH="C:\Program Files\Git\bin";%PATH%
到:
set PATH=C:\Program Files\Git\bin;%PATH%
不过,我要补充一点,Set
命令的推荐语法是:
Set "VariableName=Variable Value"
所以你真的应该这样写:
Set "PATH=C:\Program Files\Git\bin;%PATH%"
还应该注意的是,Path
值内列出的位置是按顺序搜索的,这意味着您应该仔细考虑是否应该找到您的新位置,因此是首先搜索还是最后搜索。优先级可能很重要,具体取决于该脚本中正在执行的其他操作。由于 Path
值字符串应该已经以分号结尾,您可以轻松地在末尾找到它:
Set "Path=%Path%C:\Program Files\Git\bin;"
另外请注意,已经有一个可用于普通\Program Files\
目录的环境变量,因此您可以另外合并它:
Set "Path=%ProgramFiles%\Git\bin;%Path%"
【讨论】:
这很有趣!通常引号should 没有害处(有时它们甚至可能是必需的,想想包含分号的路径),但当然这取决于处理%PATH%
变量的程序......
@aschipfl,是的,%path%
变量使用分号作为分隔符。它是双面的,因为带有双引号的路径变量将 100% 用于可执行文件,但像 where
这样的搜索功能不喜欢双引号。
@aschipfl 我并没有太惊讶,因为我记得之前在%~$Path:
循环中看到过类似的问题,%~$Path:
扩展。我会,如果我的记忆还可以预期,@For %%G In ("git.exe") Do @Echo %%~$Path:G
也会失败。我想任何愚蠢到使用分号的人都是他们的文件或目录名,应该会遇到问题。
是使用"SET "PATH=..."
还是使用内部的PATH
命令更好?
我不会说在这种情况下“更好”是可量化的@lit,但 IMO,不使用 Set
命令更有可能混淆代码的读者。话虽如此,虽然这里有点跑题了,但如果我可以使用PATHEXT ;
而不是Set "PATHEXT="
,我会更开心以上是关于信息:在执行 `where git` 时找不到给定模式的文件的主要内容,如果未能解决你的问题,请参考以下文章
git-upload-pack:克隆远程 Git 存储库时找不到命令
Google Play Developer API - 为啥在用户执行重新订阅时找不到linkedPurchaseToken?