Created
June 4, 2019 09:15
-
-
Save tylerlmz1/c8537af3656b8793fdc4b06d77ff3806 to your computer and use it in GitHub Desktop.
Search and open folders in Typora (with powershell)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#snoit.ps1 | |
#snoit stands for 'search n open in typora' | |
#### For Linux | |
# $typora_path = 'typora' | |
#### For Windows | |
$typora_path = 'C:\Program Files\Typora\typora.exe' | |
function welcome_message{ | |
Write-Host "[Open folder in Typora]" | |
Write-Host " " | |
} | |
function search_return_open { | |
#prompt for search string | |
Write-Host "(-2 to Clear-Host)" -ForegroundColor Gray | |
[string]$search_string = Read-Host -Prompt "Search folder" | |
Write-Host " " | |
#Check user input for $search_string | |
if($search_string.Length -eq 0){ | |
Write-Host "Nothing was inputted" -ForegroundColor Red | |
Write-Host " " | |
return | |
}elseif($search_string -eq -2){ | |
Clear-Host | |
welcome_message | |
return | |
} | |
#get results' full paths into an array | |
$folder_result=@() | |
$folder_result+=Get-ChildItem -Recurse -Directory | | |
Where-Object -Property Name -Like "*$search_string*" | | |
Select-Object -expandproperty FullName | |
#Check $folder_result | |
if ($folder_result.count -eq 0){ | |
Write-Host "No results" -ForegroundColor Red | |
Write-Host " " | |
return | |
} | |
### print search result along their index numbers ### | |
$script_current_folder = Get-Location | Split-Path -Leaf | |
$current_dir_name_length = $script_current_folder.Length | |
for ($i = 0; $i -le ($folder_result.length - 1); $i++) { | |
$path_string = $folder_result[$i] | |
$leaf_path = Split-Path $path_string -Leaf | |
$truncated_path_to_print = $path_string.Substring($path_string.IndexOf($script_current_folder)+$current_dir_name_length) | |
Write-Host $i : $leaf_path -ForegroundColor Yellow | |
Write-Host ".${truncated_path_to_print}" | |
Write-Host " " | |
} | |
#prompt for folder to open | |
Write-Host "(-1 to search again)" -ForegroundColor Gray | |
Write-Host "(-2 to Clear-Host)" -ForegroundColor Gray | |
$index_number =Read-Host -Prompt "index number N " | |
Write-Host " " | |
$folder_to_open_path = $folder_result[$index_number] | |
### Handling user input of $index_number ### | |
#reject if string is inputted | |
try{ | |
[int]$index_number = $index_number | |
} | |
catch{ | |
Write-Host "String not allowed`n" -ForegroundColor Red | |
return | |
} | |
#sentinel quit/launch folder/invalid index number | |
if($index_number -eq -2){ | |
Clear-Host | |
welcome_message | |
}elseif($index_number -eq -1){ | |
Write-Host "going back to search" -ForegroundColor Red | |
Write-Host " " | |
} elseif ($index_number -lt $folder_result.length){ | |
& $typora_path $folder_to_open_path | out-null #launch target folder in typora | |
Clear-Host | |
welcome_message | |
} else { | |
Write-Host "Invalid index number" -ForegroundColor Red | |
Write-Host " " | |
} | |
} | |
welcome_message | |
while (1) { | |
search_return_open | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
I have a lot of folders and I need a quick way to search a certain folder and open it in typora
I wrote this PowerShell script to do just that
tested in both Windows and Linux