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