前の記事: 📖 プログラミング脱落者救出☆大作戦<1> Windows アプリケーションの Resolve Path 編
「 Windows 10 な。
カレント・ディレクトリー(Current Directory)の説明をする。
ワーキング・ディレクトリー(Working Directory)と言っても同じだぜ」
// 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($@"Data
---------------------------
Current Directory : {currentDirectory}
Execute Assembly Directory: {executeAssemblyDirectory}
Please, Push any key.
");
Console.ReadKey();
}
// ディレクトリ・パスをコンソールへ標準出力します
EchoDirectory();
「 👆 予め C#言語で カレント・ディレクトリーと、 実行ファイルが置いてあるディレクトリーの2つを
コンソールへ標準出力するプログラムを書いておいた」
「 👆 デスクトップに C#れんしゅう
フォルダーを作成し、
その中へ さっき書いたプログラムをビルドして作った EchoDirectory.exe
実行ファイルを置いた。
なにもないところを右クリックして、 ターミナルで開く(T)
メニューをクリックしてほしい。
そんなメニュー無いってやつは Windows Terminal をインストールするか、指でもくわえて見てろだぜ」
「 今回は、コマンド・プロンプトではなく、 パワーシェル(Power Shell)を使ってみよう。
丁寧なことに、カレント・ディレクトリーが 表示されているぜ」
「 GUIと違って、ディレクトリーを一度に1つしか開けれないようなシンプルなシェルでは、
カレント・ディレクトリーというのが 今開いているディレクトリーと 同じことよ」
「 👆 じゃあ コマンドラインから ./EchoDirectory.exe
を実行しようぜ。
カレント・ディレクトリーと、 実行ファイルの置いてある場所は 同じようだな」
cd folder1
「 👆 1つ下のフォルダーへ 下りてみようぜ? 中身は空だけど……」
「 📂 folder1
を ダブルクリックして開けたのと 同じようなもんよ」
../EchoDirectory.exe
「 👆 じゃあ、 📂 folder1
から、親フォルダーにある EchoDirectory.exe
を実行してみよう」
「 カレントディレクトリーと、 実行ファイルが置いてあるディレクトリーが 異なったわね」
プログラムを実行するときは、 カレント・ディレクトリーと、 実行ファイルが置いてあるディレクトリーは
同じじゃないケースがある
ということを 頭に入れながら プログラミングしろだぜ」
「 👆 ちなみに 親フォルダーのそのまた親フォルダ―にある EchoDirectory.exe
を実行するには、頭に ../../
を付けろだぜ」
../../folder1/folder2/../../folder1/.././EchoDirectory.exe
「 👆 もちろん フォルダーを2つ上がったのに また下りて、さらに上がって また下りて、
また上がったと思ったら 今度は とどまっても、
そこに EchoDirectory.exe
があれば ちゃんとアクセスできるぜ」
Resolve-Path ../../folder1/folder2/../../folder1/.././EchoDirectory.exe
「 👆 そういうときの Resolve-Path
だぜ。
ファイルパスは、ただ文字列を つなげるだけではなく、解決(Resolve)することが 重宝するぜ」
<おわり>
Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?
コメント