※本文中の "$" は半角で読み替えること。
引数の取得
引数で指定したJPEGファイル格納先パスを取得するには?
型は文字型、必須指定とし、格納先変数名は $inputDir とする。
これをPowerShellで書くと以下の記述になる。
これをPowerShellで書くと以下の記述になる。
Param([Parameter(mandatory=$true)][String]$inputDir)引数を指定せずにスクリプトを実行すると、$inputDir の入力待ちとなる。
PS E:\EDU\PowerShell> ./changejpegdate.ps1 コマンド パイプライン位置 1 のコマンドレット ChangeJpegDate.ps1 次のパラメーターに値を指定してください: inputDir:
引数で指定したディレクトリ内のファイル一覧を取得
ファイル一覧の取得は "Get-ChildItem" コマンドレットで行う。
対象のパスを指定するには "-Path" パラメータで指定する。パスは $inputDir に格納されているので "-Path $inputDir" で良いと思う。
サブディレクトリ配下も対象とするのであれば "-Recurse" パラメータを指定すれば良いが、今回は指定しない。
ということで、ここまでのスクリプトは以下の通り。
→ エラーとなるので、これで良しとする。
例:
対象のパスを指定するには "-Path" パラメータで指定する。パスは $inputDir に格納されているので "-Path $inputDir" で良いと思う。
サブディレクトリ配下も対象とするのであれば "-Recurse" パラメータを指定すれば良いが、今回は指定しない。
ということで、ここまでのスクリプトは以下の通り。
Param([Parameter(mandatory=$true)][String]$inputDir) Get-ChildItem -Path $inputDir無効なパスを指定した場合の対応は?
→ エラーとなるので、これで良しとする。
例:
PS E:\EDU\PowerShell> ./changejpegdate.ps1 D:\TEMP\SCA Get-ChildItem : パス 'D:\TEMP\SCA' が存在しないため検出できません。 発生場所 E:\EDU\PowerShell\ChangeJpegDate.ps1:3 文字:1 + Get-ChildItem -Path $inputDir + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : ObjectNotFound: (D:\TEMP\SCA:String) [Get-ChildItem], ItemNotFoundException + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand
対象ファイルのみ抽出する
(2020.09.17改版) 拡張子は "jpeg" または "jpg" どちらでも可能とするように修正
今回対象とするのは、ファイル名が "YYYYMMDD_HHMM_xxx.jpeg (または .jpg)" の形式となったファイルである。
この形式に沿ったファイルのみGet-ChildItemで抽出するように対応する。
まず、今回のファイル形式を正規表現で表すと "^\d{8}_\d{4}_[^.]*\.jpeg" "^\d{8}_\d{4}_[^.]*\.(jpeg|jpg)" である。
※ 参考:正規表現学習 #3:数字フォーマットで検索したい
Get-ChildItemの結果を元に Where-Object コマンドレットを使い 上記正規表現で絞り込みを行う。
今回対象とするのは、ファイル名が "YYYYMMDD_HHMM_xxx.jpeg (または .jpg)" の形式となったファイルである。
この形式に沿ったファイルのみGet-ChildItemで抽出するように対応する。
まず、今回のファイル形式を正規表現で表すと "^\d{8}_\d{4}_[^.]*\.jpeg" "^\d{8}_\d{4}_[^.]*\.(jpeg|jpg)" である。
※ 参考:正規表現学習 #3:数字フォーマットで検索したい
Get-ChildItemの結果を元に Where-Object コマンドレットを使い 上記正規表現で絞り込みを行う。
Get-ChildItem -Path $inputDir | Where-Object {$_.Name -Match "^\d{8}_\d{4}_[^.]*\.(jpeg|jpg)"}"$_" はパイプラインで渡されたオブジェクトを表す。
※ #3 へ続く。
自作プログラム, PowerShell
2020.09.17改版
2020.09.17改版
0 件のコメント:
コメントを投稿