0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Powershell】Start . でカレントディレクトリが開くのはなぜか

Last updated at Posted at 2024-04-08

WindowsのコマンドとPowerShellで、Start . でカレントディレクトリがエクスプローラーで開かれるのはなぜ?と思い、調べた内容の記録。

Windowsコマンド

ドキュメント確認 - start

参照ページ:Microsoftのドキュメント (Windowsのコマンド - start)
※Windows Serverのドキュメントだが、基本は同じと考えて参照

  • 概要

指定したプログラムまたはコマンドを実行する別のコマンド プロンプト ウィンドウを起動します。

  • 解説(抜粋)
  • コマンドとしてファイルの名前を入力することにより、ファイルの関連付けを通じて非実行可能ファイルを実行できます。
  • start を実行すると、指定した実行可能ファイルの検索が行われ、見つかった場合には、現在の作業ディレクトリに関係なく、その実行可能ファイルが起動します。 実行可能ファイルを検索して、どの拡張子にも一致するものがないと、start は名前がディレクトリ名と一致するかどうかを調べます。 一致する場合、そのパスにある Explorer.exestart によって開かれます。

つまり

Start . の動きはこうなる

  1. . は実行可能ファイルか? → 実行可能ファイルでない
  2. . はディレクトリ名か? → ディレクトリ名(カレントディレクトリ)である
  3. Explorer.exe でディレクトリ . (カレントディレクトリ)を開く

PowerShell

コマンド確認

start はPowerShell従来のコマンドではないので、まずはAliasを確認

PS > get-alias start

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Alias           start -> Start-Process


PS >

Start-Process の構文から、Start .Start-Process -FilePath . ということになる。

Start-Process 構文
Start-Process
     [-FilePath] <string>
     [[-ArgumentList] <string[]>]
     [-Credential <pscredential>]
     [-WorkingDirectory <string>]
     [-LoadUserProfile]
     [-NoNewWindow]
     [-PassThru]
     [-RedirectStandardError <string>]
     [-RedirectStandardInput <string>]
     [-RedirectStandardOutput <string>]
     [-WindowStyle <ProcessWindowStyle>]
     [-Wait]
     [-UseNewEnvironment]
     [<CommonParameters>]

ドキュメント確認 - Start-Process

参照ページ:Microsoftのドキュメント (PowerShell - Start-Process)

このコマンドレットは Start-Process 、ローカル コンピューターで 1 つ以上のプロセスを開始します。 既定では、 Start-Process 現在のプロセスで定義されているすべての環境変数を継承する新しいプロセスを作成します。

プロセスで実行するプログラムを指定するには、実行可能ファイルまたはスクリプト ファイル、またはコンピューター上のプログラムを使用して開くことができるファイルを入力します。 実行可能でないファイルを指定する場合は、 Start-Process コマンドレットと同様に、ファイルに関連付けられているプログラムを Invoke-Item 開始します。

パラメーターを使用して、ユーザー プロファイルの Start-Process 読み込み、新しいウィンドウでのプロセスの開始、代替資格情報の使用などのオプションを指定できます。

日本語版 がわかりづらかったので、英語版 から

The Start-Process cmdlet starts one or more processes on the local computer. By default, Start-Process creates a new process that inherits all the environment variables that are defined in the current process.

To specify the program that runs in the process, enter an executable file or script file, or a file that can be opened using a program on the computer. If you specify a non-executable file, Start-Process starts the program that's associated with the file, similar to the Invoke-Item cmdlet.

You can use the parameters of Start-Process to specify options, such as loading a user profile, starting the process in a new window, or using alternate credentials.

補記・意訳すると

Start-Process は、ローカルコンピューターで1つ以上のプロセスを開始します。 既定では、Start-Process で起動したプロセス(子プロセス)には、Start-Process を実行したプロセス(親プロセス)で定義されているすべての環境変数が継承されます。

プロセスとして起動するファイル(-FilePath)には、実行ファイル、スクリプトファイル、コンピュータ上のプログラムで開くことができるファイルを指定することができます。
実行ファイル以外が指定された場合は、コマンドレット Invoke-Item と同様に、指定ファイルに関連付けられたプログラムを開始します。

Start-Process のオプションパラメーターを使用することで、読み込むユーザープロファイル、新しいウィンドウでの開始、代替資格情報の使用などを指定できます。

ドキュメント確認 - Invoke-Item

参考に Invoke-Item についても確認。

参照ページ:Microsoftのドキュメント (PowerShell - Invoke-Item)

  • 概要

指定した項目に対して、既定のアクションを実行します。

  • 説明

コマンドレットは Invoke-Item 、指定された項目に対して既定のアクションを実行します。 たとえば、実行可能ファイルを実行したり、ドキュメント ファイル タイプに関連付けられているアプリケーションでドキュメント ファイルを開きます。 既定のアクションは項目の種類によって異なり、データへのアクセスを提供する PowerShell プロバイダーによって決まります。

つまり

Powershellでの start . の動きはこうなる(一部推測)

  1. Start .Start-Process -FilePath .
  2. ファイルパス . は実行可能ファイルか? → 実行可能ファイルでない
  3. ファイルパス . に関連づけられているアプリケーションは?
     → 【推測】ディレクトリ(フォルダ)には Explorer.exe が関連づけられている
  4. Explorer.exe. (カレントディレクトリ)を開く

また、以下2つはどちらも、コマンド実行するとカレントディレクトリが開く。

  • start . ( Start-Process -FilePath . )
  • ii . ( Invoke-Item -Path . )
0
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?