0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ファイルやディレクトリを検索し、フルパスを変数に格納する【Windows】

Last updated at Posted at 2025-01-18

初投稿

未経験から半年が経ち、案件が変わったら忘れそうなのでアウトプットもしていこうと思い始めました。まだまだ下流工程なので、単体テストの証跡撮り等の効率化したものぐらいしかアウトプットはないですが、小出しで忘れないようにしていこうと思います。

プログラミング言語もいくつか触ったことがあるくらいで、特徴も何も分からないぺーぺーですが、Windows標準搭載のPowershellがとっつきやすくて作ってます。(上司には「これはbatchファイルの方が処理軽いよ~」等アドバイス受けつつ少しずつ成長しています。)

作成の経緯

今回のものはプロセスを立ち上げる際にフルパスを書いたのにユーザーによっては違うところに格納していてうまくスクリプトが機能しないことがあったので作成しました。


対象のあるフォルダを検索し変数に格納する

今回はWinShot類のあるフォルダ(今回はws153a)を検索かけてフルパスを格納します。
エラー出力を飛ばしているのは、Cドライブ直下等から検索をかけるとシステム系のファイルで権限ないもののエラーが大量に吐かれるためです。

#c:/配下のディレクトリをws153aをキーワードに再帰的に検索し、フルパスを$WSPathに格納する
$WSPath = Get-ChildItem -Path c:/ -Filter ws153a -Directory -Recurse 2>$null `
|Convert-Path

-Filterの後ろを変更することで、よく使うもののパスを検索可能です。
(※ファイル検索時は-Directoryを消します。)
自分がよく検索するのはttermpro.exechrome.exe等です。
explorer.exeもプロセスを立ち上げる際によく使いますが、こちらはこれで検索すると複数結果が返ってきますし、標準搭載で場所が分かるので直接指定した方が早いです。
-Pathの後ろは絞れる方が早く検索できます。c:/等だと範囲が広いため少し時間がかかります。

注意

あるあるですが、スクリプト実行時はGet-ExecutionPolicyRestrictedになっていると実行できなかったりします。
管理者として以下を実行すること設定変更ができます。

#RemoteSignedにポリシーを変更
Set-ExecutionPolicy RemoteSigned

Winshotの複数の結果が返ってきてしまった場合の対処は以下を参考にしてください。最終行の一行前までで止めることで一意になります。

0
1
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?