LoginSignup
4
2

More than 5 years have passed since last update.

PowerShellでfindもどき

Last updated at Posted at 2017-07-03

目的

PowerShellでファイル検索のツールを作ってみた。

環境

OS : Windows 7 以降
PowerShell: Version 3 以降

コード

PowerShellスクリプトですが、Windows バッチファイルとしても実行できる特殊な構造になっています

find.bat
<# : バッチコマンド(PowerShellコメント)開始
@echo off & setlocal
rem
rem  高速ファイル検索
rem
rem     Find.bat  [検索対象の最上位フォルダー] [ファイル名のフィルター]
rem
rem     Created by earthdiver1
rem     クリエイティブ・コモンズ 表示 - 継承 4.0 国際 ライセンスの下に提供されています。
rem
rem -------------------------------------------------------------------------------
rem 以下はPowershellスクリプトをバッチファイルの中に埋め込むためのプリアンブルです。
set BATCH_ARGS=%*
if defined BATCH_ARGS set BATCH_ARGS=%BATCH_ARGS:"=\"%
if defined BATCH_ARGS set BATCH_ARGS=%BATCH_ARGS:^^=^% 
endlocal & Powershell -NoP -C "$input|&([ScriptBlock]::Create((${%~f0}|Out-String)))" %BATCH_ARGS%
exit/b
rem -------------------------------------------------------------------------------
: バッチコマンド(PowerShellコメント)終了 #>
param (
    [String]$Dir,
    [String]$Filter
)

Function find {
    param (
        [String]$Dir,
        [String]$Filter
    )
    if (-not $Dir)    { Write-Host "フォルダの指定がありません。" -Fore Red  ; Get-Help find; return }
    if (-not $Filter) { Write-Host "ファイルの指定がありません。" -Fore Red  ; Get-Help find; return }
    $global:ErrorView = "CategoryView"
    Get-ChildItem -Path $Dir -Filter $Filter -File -Recurse | %{ Write-Output $_.FullName }
    $global:ErrorView = "NormalView"
}

if (-not $Dir) {
    Write-Host "検索対象の最上位フォルダを指定してください。: " -NoNewline -Fore Green
    try { $Dir = (Read-Host).Trim() } catch [System.Exception] {}
}
if (-not $Filter) {
    Write-Host "検索対象のファイルを指定してください(ワイルドカード使用可)。: " -NoNewline -Fore Green
    try { $Filter = (Read-Host).Trim() } catch [System.Exception] {}
}
find $Dir $Filter
Write-Host
Write-Host "終了するには何かキーを押してください . . ." -Fore Green
$Host.UI.RawUI.FlushInputBuffer()
$Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyUp") | Out-Null
4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2