LoginSignup
2
3

More than 5 years have passed since last update.

C#とPowerShellで遊ぶ

Last updated at Posted at 2018-10-13

C#で出来るものをPowerShellで書く

C#実装できたものをPowerShellでもやってみる

プログラム

主な動作

  • *.mp3 に前方部分一致したファイルの一覧を表示する

動作条件と検索対象

  • コマンドライン引数の 第1個目の引数 を検索対象のディレクトリ場所とする
  • コマンドライン引数が無い場合は, My Musicフォルダ から検索する

C#

SearchMP3.cs
using System;
using System.IO;

namespace SearchMP3
{
    class Program
    {
        /// <summary>
        /// "*.mp3" ファイルを検索し表示
        /// </summary>
        /// <param name="args">コマンドライン引数</param>
        /// <example>ディレクトリにファイルが存在した場合はコンソールに表示</example>
        static void Main(string[] args)
        {

            string path = null;

            if (args.Length == 1)
            {
                // コマンドライン引数があるとき
                path = args[0];
            }
            else
            {
                // コマンドライン引数がないとき
                path = Environment.GetFolderPath(Environment.SpecialFolder.MyMusic);
            }

            // *.mp3に一致するファイルの取得
            string[] files = Directory.GetFiles(path, "*.mp3", SearchOption.AllDirectories);

            // ファイルパスの出力
            foreach (string file in files)
            {
                Console.WriteLine(file);
            }
        }
    }
}

PowerShell

プログラム

SearchMP3.ps1
<#
.SYNOPSIS
 "*.mp3" ファイルを検索し表示
.DESCRIPTION
 コマンドライン引数に指定したディレクトリのファイルが存在した場合はコンソールとウィンドウに表示
#>

if ($Local:args.Length -eq 1) {
    # コマンドライン引数
    $Local:path = $args[0]

} else {
    # MyMusicフォルダ
    $Local:path = [System.Environment]::GetFolderPath([System.Environment+SpecialFolder]::MyMusic)    
}

$Local:files = [System.IO.Directory]::GetFiles($Local:path, "*.mp3", [System.IO.SearchOption]::AllDirectories);

# コンソール出力
$Local:files | Write-Output

# 画面出力
$Local:files | Out-GridView -Title "*.mp3のファイル一覧"

PowerShellファイルの実行方法

C:\のフォルダから検索するには以下のようにして実行

PowerShell
> .\SearchMp3.ps1 "C:\"

実行できないとき

以下のサイトが参考になります。
http://qiita.com/tomoko523/items/df8e384d32a377381ef9

要するに、PowerShellの実行ポリシーを変更すればOK!

PowerShell(管理者権限で実行)
> Set-ExecutionPolicy RemoteSigned

2018/10/13 追記

管理者権限が不要で、ユーザー単位で実行ポリシーを変更できる方法があるようです。
詳しくは、本記事のコメントを参照ください。

2
3
2

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
2
3