如何使用Powershell在路径中倒退

时间:2017-07-21 14:41:37

标签: windows powershell

我正在搜索文件夹,以便找到具有我想要的内容的文件夹。

$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..

提前谢谢大家。

4 个答案:

答案 0 :(得分:3)

您可以这样做:

$Path2 = Resolve-Path (Join-Path $Path '..')

注意:

  • Join-Path是连接路径字符串的跨平台方式
  • Resolve-Path会为您提供完全限定的路径名​​称
    • ^^ step是可选的,因为windows会为你遍历..,但它有助于直观地看到它解析的文件夹。

这有帮助吗?

答案 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")