获取powershell以显示可在驱动器上找到某个文件的所有路径

时间:2009-04-18 03:16:32

标签: powershell

我正在尝试构建一个函数,它将向我显示某个文件名所在的所有路径。该函数将采用一个参数,即文件名。 结果将是所有路径的列表,或者说系统上没有此类文件的消息。

我是Powershell的新手,我还没有得到语法。 我试过这个:

Get-ChildItem -Path -Include notepad.exe

但是这引发了一条错误消息。我正在尝试:

$i="notepad.exe"

Foreach ($i in Get-ChildItem c:\ -Recurse){echo -Path}

现在开始,它仍在运行,不知道会发生什么,真的。

编辑:回复了大量的行,只是说“-Path”......

有人可以帮忙解决这个问题吗?顺便说一下,我正在运行Powershell 1.0。

因此,为了解释在执行此命令时我希望看到的内容,以下是我在寻找* .txt后所期望的一个示例:

  

C:/foo.txt
  C:/A/foobar.txt
  C:/A1/foo.txt

依此类推,列出我硬盘上所有.txt文件的路径。只有路径,每行一个,不需要额外的信息。

EDIT2:

我做到了。对于那些在未来寻找这个问题的人,我要留下这个问题。

我使用的功能就是这个(这个具体示例将为您提供硬盘上所有.zip文件的列表,在需要时进行编辑):

Get-ChildItem -Path c:\ -Include "*.zip" -Recurse -Force -Name > c:\listOfPaths.txt

这在我的C:\文件夹中创建了一个名为listOfPaths.txt的文件,其中包含在我的硬盘驱动器的所有子文件夹中以.zip结尾的任何文件的所有出现的列表。

未提及“c:\”位,但我不介意。

EDIT3:

感谢capar获得更完整的版本。

这是capar的代码(或者我是如何使用它的,因为Get-Children在1.0中不起作用)

Get-ChildItem -Path c:\ -Recurse *.txt | Select-Object -Property FullName

3 个答案:

答案 0 :(得分:9)

由于是星期五晚上,我决定玩Power Shell,看看能不能帮忙:) 这非常接近我的想法:

Get-ChildItem -Path c:\ -Recurse *.txt | Select-Object -Property FullName

如果有帮助,此命令将列出将由Get-ChildItem返回的任何对象的属性:

Get-ChildItem | Get-Member

答案 1 :(得分:1)

ls c:\ -r | ? {$ _。name -eq“notepad.exe”}

答案 2 :(得分:1)

在Powershell V3中也没有认识到Get-Children。如果有人删除了这个糟糕的例子,那就太好了。

警告任何搜索文件的人:今天的硬盘上的C:\需要很长时间才能运行。建议您尽可能缩小搜索范围。由于您的文件夹结构可能包含空格或特殊字符,请使用打字机引号(“)或撇号(')分隔符。

$ mylistoffiles = Get-ChildItem -Path'C:\ Windows \ Setup \ Scripts'-Recurse * .cmd | Select-Object -Property FullName

$ mylistoffiles