A simple file finder app. Built with Powershell.
Report Bug
·
Request Feature
Table of Contents
This is a simple Folder Finder app. There are two scripts provided both built-in Powershell.
FindProject.ps1
is a command line editorFindProjectGui.ps1
is a Graphical User Interface.
To run the scripts you will need to follow the instructions below.
- Clone the repo:
git clone https://github.com/Hopelezz/FindProject.git
- Inside the FindProject folder Right-click on the
FindProject.ps1
file and selectRun with Powershell
.
- Create a Shortcut to the
FindProject.ps1
file. - Right-click on the shortcut and select
Properties
. - In the
Shortcut
tab, in theTarget
field, add the following at the beginning of the path:Powershell
. This will prompt Powershell to run the script.
Additionally, you may have to set the execution policy based on your systems administrator settings. Contact your system administrator for more information.
More information on execution policies can be found here.
- Create a function that will search for a file in a given directory and 1 subdirectory.
- Create a Graphical User Interface (GUI) for the function.
- Input field for the file name.
- Search Button to run the function.
- ListBox to display the results.
Improvements:
- Pressing
Enter
in the input field should run the function. - Double-clicking on a result should open the file.
- Add
Clear
button to clear the input field. - Add
Warning
if the input is empty or under 3 characters. - Add
Warning
if the file is not found. - Add
Try/Catch
to handle errors. - Add
ContextMenu
to open Path in VS Code - Add Keybind
Ctrl + Enter
to search C:\ drive. - Refactor Code to simplify and remove unused code.
- Add
Properties
menu toContextMenu
to open folder Properties.- This is rather complicated since (Start-Process -FilePath Explorer.exe "/select, $FolderPath") doesn't work, but it will Open To Folder and select it.
- Tree.txt is created from function FindTree{} and placed at $dirPath. The idea is to reduce the search impact on servers to once a day for the first user to search.
C# APP
- Create a base WPF Winform version.
- User Feedback: Provide more feedback to the user during the search process. For example, can show a loading spinner while the search is in progress or disable the search button during the search to prevent multiple simultaneous searches.
- Asynchronous Search: Due to potentially long wait times for large directory structures, could perform the search operation asynchronously to keep UI responsive. Can use an async-await pattern for this. [Note: this has personally improved the search delay significantly over the Powershell version for large folder structures]
- Enhanced UI: Can improve the UI by adding features like:
- Sort functions
- Displaying folder details (Maybe add tooltips that access metadata?)
- Setting Menu to enable features
- Add customizable Default Path
- Add customizable Ctrl + Enter Path
- Add search criteria, such as searching by file type, file size, creation/modification date, etc. (Not sure if I want to do this)
- Add a dedicated path within the folder that opens. For example, if all folders have the same folder architecture could set an additional dedicated path like [path] + [results] +
\\Design\\Controls
- Localization: to support different regions. Could use AI or translation software [Note: Not a lot to convert if any]
- Configurability: Instead of hardcoding the minimum length requirement for the search term (3). This allows users or administrators to adjust the behavior of the application according to their preferences.
See the open issues for a full list of proposed features (and known issues).
Contributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
Distributed under the MIT License. See LICENSE.txt
for more information.