KdgDev
KdgDev

Reputation: 14529

Get powershell to display all paths where a certain file can be found on a drive

I'm trying to build a function that will show me all path's where a certain filename is located. The function would take one parameter, that being the file name. The result would be either a list of all paths, or a message saying there's no such file on the system.

I'm new to Powershell, and I'm not getting the syntax just yet. I've tried this:

Get-ChildItem -Path -Include notepad.exe

But that threw an error message. I'm currently trying:

$i="notepad.exe"

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

Started that now, it's still running, don't know what'll happen, really.

EDIT: echo'd an enormous amount of lines that just say "-Path"...

Can anybody help with this problem? I'm running Powershell 1.0 by the way.

So, to explain what I wish to see when executing this command, here is an example of what I expect after looking for *.txt:

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

And so on, listing the path to all .txt files on my harddrive. Only the paths, one per line, no extra info needed.

EDIT2:

I've done it. I'm gonna leave this question up for those who make look for this in the future.

The function I used was this(this specific example will hand you a list of all .zip files on your harddrive, edit where needed):

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

This created a file called listOfPaths.txt on my C:\ folder and this contained a list of all occurences of any file ending with .zip in all subfolders of my harddrive.

The "c:\" bit isn't mentioned, but I don't mind.

EDIT3:

thanks capar for a more complete version.

Here is capar's code(or how I got it to work, since Get-Children doesn't work in 1.0)

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

Upvotes: 6

Views: 23702

Answers (3)

Arnold Spence
Arnold Spence

Reputation: 22272

Since it's Friday night, I decided to play with Power Shell to see if I can help :) This comes pretty close to what you are asking for I think:

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

If it helps, this command will list the properties of any object that will be returned by Get-ChildItem:

Get-ChildItem | Get-Member

Upvotes: 9

Ken
Ken

Reputation: 11

Get-Children is not recognized in Powershell V3 either. It would be great if someone removed that bad example.

As a warning to anyone searching for files: C:\ on today's hard drives will take a long time to run. You are well advised to narrow your search as much as you can. Since your folder structure might include spaces or special characters, use the typewriter quote (") or apostrophe (') delimeters.

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

$mylistoffiles

Upvotes: 1

Andriy Volkov
Andriy Volkov

Reputation: 18923

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

Upvotes: 1

Related Questions