我正在搜索文件夹,以便找到具有我想要的内容的文件夹。
$path = dir "C:\windows\ccmcache\*\Office.en-us" -Directory
echo $path
它返回:
Directory: C:\windows\ccmcache\c
但是当我运行我的命令时:
Start-Process "$path\setup.exe /uninstall ProPlus /config Uninstall.xml" -Wait
它试图运行:
C:\windows\ccmcache\c\Office.en-us\setup.exe............
哪个不存在!那么我该如何返回一步,以便我可以从 setup.exe
文件夹 中运行c
命令?
类似的东西:
$path2 = $path\cd..
提前谢谢大家。
答案 0 :(得分:3)
您可以这样做:
$Path2 = Resolve-Path (Join-Path $Path '..')
Join-Path
是连接路径字符串的跨平台方式Resolve-Path
会为您提供完全限定的路径名称
..
,但它有助于直观地看到它解析的文件夹。 这有帮助吗?
答案 1 :(得分:2)
您正在使用Get-ChildItem
来返回System.IO.DirectoryInfo
个对象。您正在寻找的路径已经存在于Parent
属性中。
$path2 = $path.Parent.FullName
此处不需要其他cmdlet。如果你不想,你甚至不需要将它保存到另一个变量中。
请注意,您的$path
可能会有多个结果,这些结果会在您的代码中产生影响。如果你只关心第一个,你可以添加| Select -First 1
以保证只有一个结果。
答案 2 :(得分:0)
我不确定我完全明白你在问什么..你的意思是如何回溯你的文件目录?该命令是" cd .."
你的意思是如何调用$ path然后在目录中向上移动一级?如果是这样,您需要在调用setup.exe之前创建一个高一级的新$ var
答案 3 :(得分:0)
只需使用 Resolve-Path 函数即可完成。 假设结构如下
root
Folder1 Folder2
我们当前的工作目录是 Folder1,我们想移动到 Folder2。
$path2 = Resolve-Path("$path\..\Folder2\fileinFolder2")