プログラミング脱落者救出☆大作戦<2> Current Directory と Executing Assembly Location 編

前の記事: 📖 プログラミング脱落者救出☆大作戦<1> Windows アプリケーションの Resolve Path 編

202101__character__31--ramen-tabero-futsu2.png
「 Windows 10 な。
カレント・ディレクトリー(Current Directory)の説明をする。
ワーキング・ディレクトリー(Working Directory)と言っても同じだぜ」

202101__character__28--kifuwarabe-futsu.png
「 フーン」

202212_programming_23-2324.png

// See https://aka.ms/new-console-template for more information

using System.Reflection;

// ディレクトリ・パスをコンソールへ標準出力します
static void EchoDirectory()
{
    string currentDirectory = Directory.GetCurrentDirectory();
    string executeAssemblyDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) ?? "null";

    Console.WriteLine([email protected]"Data
---------------------------
Current Directory         : {currentDirectory}
Execute Assembly Directory: {executeAssemblyDirectory}

Please, Push any key.
");

    Console.ReadKey();
}

// ディレクトリ・パスをコンソールへ標準出力します
EchoDirectory();

202101__character__31--ramen-tabero-futsu2.png
「 👆 予め C#言語で カレント・ディレクトリーと、 実行ファイルが置いてあるディレクトリーの2つを
コンソールへ標準出力するプログラムを書いておいた」

202108__character__12--ohkina-hiyoko-futsu2.png
「 豆ねえ」

202212_programming_23-2329o1.png

202101__character__31--ramen-tabero-futsu2.png
「 👆 デスクトップに C#れんしゅう フォルダーを作成し、
その中へ さっき書いたプログラムをビルドして作った EchoDirectory.exe 実行ファイルを置いた。

なにもないところを右クリックして、 ターミナルで開く(T) メニューをクリックしてほしい。
そんなメニュー無いってやつは Windows Terminal をインストールするか、指でもくわえて見てろだぜ」

202212_programming_23-2334o1.png

202101__character__28--kifuwarabe-futsu.png
「 👆 黒い画面が出てきたぜ」

202101__character__31--ramen-tabero-futsu2.png
「 今回は、コマンド・プロンプトではなく、 パワーシェル(Power Shell)を使ってみよう。
丁寧なことに、カレント・ディレクトリーが 表示されているぜ」

202108__character__12--ohkina-hiyoko-futsu2.png
「 GUIと違って、ディレクトリーを一度に1つしか開けれないようなシンプルなシェルでは、
カレント・ディレクトリーというのが 今開いているディレクトリーと 同じことよ」

202212_programming_23-2339o1.png

202101__character__31--ramen-tabero-futsu2.png
「 👆 じゃあ コマンドラインから ./EchoDirectory.exe を実行しようぜ。
カレント・ディレクトリーと、 実行ファイルの置いてある場所は 同じようだな」

202101__character__28--kifuwarabe-futsu.png
「 パワーシェルでは 頭に ./ を付けるんだな」

202212_programming_23-2344.png

cd folder1

202101__character__31--ramen-tabero-futsu2.png
「 👆 1つ下のフォルダーへ 下りてみようぜ? 中身は空だけど……」

202108__character__12--ohkina-hiyoko-futsu2.png
「 📂 folder1 を ダブルクリックして開けたのと 同じようなもんよ」

202212_programming_23-2347.png

../EchoDirectory.exe

202101__character__31--ramen-tabero-futsu2.png
「 👆 じゃあ、 📂 folder1 から、親フォルダーにある EchoDirectory.exe を実行してみよう」

202101__character__28--kifuwarabe-futsu.png
「 今度は 頭に ../ を付けたんだな」

202108__character__12--ohkina-hiyoko-futsu2.png
「 カレントディレクトリーと、 実行ファイルが置いてあるディレクトリーが 異なったわね」

202101__character__31--ramen-tabero-futsu2.png
「 このように、

プログラムを実行するときは、 カレント・ディレクトリーと、 実行ファイルが置いてあるディレクトリーは
同じじゃないケースがある

ということを 頭に入れながら プログラミングしろだぜ」

202212_programming_23-2354.png

202101__character__31--ramen-tabero-futsu2.png
「 👆 ちなみに 親フォルダーのそのまた親フォルダ―にある EchoDirectory.exe を実行するには、頭に ../../ を付けろだぜ」

202101__character__28--kifuwarabe-futsu.png
「 わらう」

202212_programming_23-2357.png

../../folder1/folder2/../../folder1/.././EchoDirectory.exe

202101__character__31--ramen-tabero-futsu2.png
「 👆 もちろん フォルダーを2つ上がったのに また下りて、さらに上がって また下りて、
また上がったと思ったら 今度は とどまっても、
そこに EchoDirectory.exe があれば ちゃんとアクセスできるぜ」

202101__character__28--kifuwarabe-futsu.png
「 無駄な知識 わらう」

202108__character__12--ohkina-hiyoko-futsu2.png
「 分かりづらくない?」

202212_programming_24-0002.png

Resolve-Path ../../folder1/folder2/../../folder1/.././EchoDirectory.exe

202101__character__31--ramen-tabero-futsu2.png
「 👆 そういうときの Resolve-Path だぜ。
ファイルパスは、ただ文字列を つなげるだけではなく、解決(Resolve)することが 重宝するぜ」

202108__character__12--ohkina-hiyoko-futsu2.png
「 今日は ここまでね」

<おわり>

ツイッターでシェア
みんなに共有、忘れないようにメモ

むずでょ@きふわらべ第29回世界コンピューター将棋選手権一次予選36位

光速のアカウント凍結されちゃったんで……。ゲームプログラムを独習中なんだぜ☆電王戦IIに出た棋士もコンピューターもみんな好きだぜ☆▲(パソコン将棋)WCSC29一次予選36位、SDT5予選42位▲(パソコン囲碁)AI竜星戦予選16位

Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

有料記事を販売できるようになりました!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?

コメント