在 Windows 中获取大小写敏感路径的 Powershell 命令

4

我正在寻找一种获取包含任何驼峰命名的本地路径的方法。主要原因是为了在Windows WSL中使用相同的路径进行调用。例如,在Windows中,我可以调用一个文件

c:\FoO\bar.txt 
c:\Foo\Bar.txt

当我尝试通过bash进入WSL时,需要知道实际路径,因为Linux区分大小写,而Windows会将其显示为c:\foo\bar.txt

我尝试使用以下方法:

$PSScriptRoot
Split-path C:\FoO\Bar.txt
(get-Item c:\Foo\Bar.txt).FullName

但是他们只会提供调用脚本的路径。
我该如何获取在Windows操作系统中显示的路径?由于无法保证根目录,因此无法直接调用所需文件的完整路径。同时也不希望浪费资源进行查找。

4个回答

2
你所需要的是查看从Get-Item返回的Target属性。 Fullname将以最初输入的方式返回,但是Target实际上是一个代码属性,似乎获取对象的原始路径。
(get-Item c:\Foo\Bar.txt).Target

这正是我想要的。谢谢! ``` >pwd 路径

C:\Users\foo\source\repos\ PS > (get-item ("c:\users\FOO\SOURCE\REPOs")).target C:\Users\foo\source\repos PS > (get-item ("c:\users\FOO\SOURCE\REPOs")).FullName C:\users\FOO\SOURCE\REPOs
```
- Eric
没问题,很高兴能帮助到你 :) - Sambardo
12
这里目标为空 :-(。我在 Windows 10 上使用 PowerShell 5。 - mark
其他解决方案:https://serverfault.com/a/431685 - Patrick

1

从Windows 10开始,Target属性为空。
(Get-Item '....')不包含任何保存区分大小写名称的属性。

然而,当获取文件夹的所有子项时,您会得到所有名称的区分大小写。

因此,我的解决方案如下:

$myCaseInsensitiveFileName = 'c:\FoO\bar.txt'

$allFiles = Get-ChildItem 'c:\' -Recurse
$caseSensitiveName = $allFiles.FullName | Where-Object { $_.FullName -eq $myCaseInsensitiveFileName }

$caseSensitiveName 包含 C:\Foo\Bar.txt

注意:

  • 这可以进行优化,但你明白了。
  • -eq 运算符不区分大小写地比较字符串。

1
一个不需要递归的一行代码:(Get-ChildItem -LiteralPath (Split-Path $somePath) | Where-Object Fullname -eq $somePath).Fullname - zett42

-3

在Windows文件资源管理器中查找目录并显示完整路径名。
在WSL或PowerShell中查找目录并使用"pwd"或"echo $PWD"获取完整路径名。
将目录添加到$HOME/.profile的PATH中,您就不需要完整的路径名了。


我不想手动操作,需要一种自动化的方法来确定这个。:-( 这条路线将根据运行它的每个用户而异。我不能指望它总是从c:\foo运行,它可能是c:\bar\foo或e:\x\y\z\foo,e:\X\y\X\Z\foo。我没有在我的机器上运行这个,这是某些其他自动化流程的一部分。 - Eric

-3

我有一些自动化的方法来做这件事。
请参见http://ContextKnowledge.blog
"myenv package for Windows 10 + Cygwin + WSL/Ubuntu"
该软件包包括几个短的shell脚本,
它们可以找到信息并将其记录在环境变量中。
如果这些shell脚本对您不起作用,请与我联系并提供更多细节,
我会想出其他解决方案。


虽然这个链接可能回答了问题,但最好在此处包含答案的关键部分并提供参考链接。如果链接页面更改,仅有链接的答案可能会变得无效。- 来自审核 - NightOwl888
1
NightOwl1888:下载myenv包。如果您认为所有的shell脚本都应该在这里发布,欢迎您这样做。 - rhmccullough

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接