我正在寻找一种方法来获得我的本地路径,其中包括名称中使用的任何驼峰式大小写。主要原因是这样我就可以使用相同的路径在windows wsl中进行调用。例如,在windows中,我可以调用一个文件
c:\FoO\bar.txt
c:\Foo\Bar.txt
Windows将显示为c:\foo\bar.txt
。当我尝试用bash输入WSL时,我需要知道实际的路径,因为Linux是区分大小写的。
我试过用
$PSScriptRoot
Split-path C:\FoO\Bar.txt
(get-Item c:\Foo\Bar.txt).FullName
但它们将仅提供调用脚本的路径。
我如何得到我的路径,因为它显示在windows操作系统?我不能只调用我需要的文件的完整路径,因为我不能保证它从根目录开始。我也不想因为一个发现而浪费时间。
4条答案
按热度按时间6yjfywim1#
您需要查看从
Get-Item
返回的Target
属性。Fullname
会返回到您最初输入的任何值,但Target
实际上是一个代码属性,似乎可以获取对象的原始路径。ltqd579y2#
从Windows 10开始,
Target
属性为空。(Get-Item '....')
不包含任何包含区分大小写名称的属性。但是,当获取文件夹的所有子项时,您将获得区分大小写的所有名称。
所以我的解决方案是这样的:
$caseSensitiveName
包含C:\Foo\Bar.txt
。备注:
-eq
运算符比较字符串时不区分大小写xeufq47z3#
用Windows文件资源管理器找到目录,它会显示完整的路径名。
在WSL或PowerShell中找到目录,“pwd”或“echo $PWD”给出完整的路径名。
将目录添加到$HOME/.profile中的PATH,并且不需要完整的路径名。
sd2nnvve4#
我有一些自动化的方法来做到这一点。
参见http://ContextKnowledge.blog
“适用于Windows 10 + Cygwin + WSL/Ubuntu的myenv包”
该软件包包括一些简短的shell脚本
它找到信息并将其记录在环境变量中。
如果这些shell脚本不适合您,请与我联系以了解更多详细信息
我会想办法解决的