PowerShellでもWindowsディレクトリーツリー表示 display of directories with the Windows PowerShell

はじめに

 GrassGISを使うのに,ファイル構造を見るのは欠かせない。ぼくは,1990年以来のmacユーザーのためか,macOSではファイルディレクトリ構造を簡単に見ることができるが,microsoftはWindows3.1になってからか,特に見にくくなったような印象がある。ウィンドウズのコマンド入力は,コマンドプロンプト形式であったが,どうもPowerShellがメーンになったようである。GrassGISを使う上で,その確認をするのがこのページの役割である。shellというのは,「ユーザからのコマンド入力を受け付け、解釈するプログラム」のことである。macで使われている(今も?)bashとは少しだけ違うようである。

1 PowerShellの立ち上げ

 マイクロソフトサポートに,コマンド プロンプトは PowerShell に置き換えられます があった。

 a Windowsロゴキー❖ + Xキーで,メニューを出して,powershellを選ぶか,
 b エクスプローラーを開いて,アドレス バーに「 cmd」 (または「powershell」) と入力して、それぞれのコマンド シェルを起動することもできる,とある。

 後者の場合は,必要な場所のディレクトリーにクリッククリックで入ってから,ディレクトリ表示に代わって,アドレスバーに,powershell,を入力するといったことが可能ではある。なお,Explorerなるものは以前,internet browser であって,Windows内のディレクトリーなども同じ位置づけという印象であったが,現在は,macのfinder対応が explorer で,macのsafari対応がMicrosoft Edgeのようである。これもWindowsユーザーには常識であろうけど。

 ぼくの環境で,「a」を実行すると,

PS C:\WINDOWS\SYSTEM32>

が表示される。psは,unixなどの上で現在動作しているプロセスを表示するコマンドであるが,このコマンドラインの意味は,操作しているマシーンだけに限定するという意味があるのではないか。System32は64ビット用のファイル群であることを示している。パソコンは16ビットマシーン,32ビットマシーン,そして64ビットマシーンと進化してきた。マシーンが64ビットであっても,ユーザーの使用アプリには32ビットマシーンがあるので,両方に対応するような措置がなされていて,32ビット用は,SysWOW64フォルダーに入っている。マシーンの進化過程とプログラムの関係から,見かけ上の名称のいわば逆転が生じている。開発過程の便宜から来たものであろう。

2 実行前に: 記録

 ネット上では,マウスの右クリックでコピーして,となっているが,ぼくのmouse PCでは,右クリックすると,コピー対象域の選択部分が解除されてしまう。そこで,残念ながら,スクリーンショットで対処することにした。Windowsユーザーにとっては常識だろうが,その方法を次に示す。なお,mac内のParallels Desktopでは,macのコピペがWindows内にも及んでいたのでこのような問題はなかった。Parallels Desktopって,凄いツールだと思う。mac内にWindowsがあることで,いわば,Windowsをmacのアプリのように取り扱うことができる。

2.1 スクリーンショットでコピペ

 a アクティブ画面キャプチャ,そして,ファイル保存:
         Windowsロゴキー❖+Alt+PrtSc, そして❖+G
または
 b  全画面キャプチャ,そして,ファイル保存 :   
         Windowsロゴキー❖+PrtSc, そして❖+G

の何れかを実施した後,クリップボードを見る形で,Windowsロゴキー❖+V,を実施する。そうしておいて,電子メールを立ち上げて, 新規メールの本文にカーソルを置いて,クリップボード中の先ほど撮影したスクリーンショットを左クリックすれば,コピペされる。なお,❖+Gで開いたXboxの左ペーンにはこれまで作成したスクリーンショットが時系列(上ほど新規)で並んでいる。ここで個々のスクリーンショットを編集できる。macに比べて解像度は極めて低く,Photoshopでweb用に変更する必要性がない。字などがつぶれて見えなくなってしまう。図6から処理なしのスクリーンショットを使っている。

2.2 テキストのコピペ

 テキストのコピーアンドペーストが出来ないと思ったけど,Windos PowerShellウィンドウの左上隅のアイコンをクリックすると,編集コマンドが出てきた,先にコピーしたい領域を選んで,編集コマンドのコピーを選んで,メモ帳を開いて,ペーストできた。嬉しい。

3 ディレクトリー構造をツリー形式で表示: treeコマンド

簡単!フォルダの中身をツリー上に一覧で表示させる方法【Windows】
上記サイトに,わかりやすく示されている。

 Windowsロゴキー❖+ Xキー で現れるメニューから,Explorerを選んで,表示したいディレクトリー(フォルダー)に行きついて,そのディレクトーが表示されているアドレスバーに,powershellを入力すると,次のように,そのディレクトリーに対応するプロンプトが表示される。


PS C:\Users\⋯⋯⋯⋯⋯\sample> tree /f

ここで,上のように,tree_/f (スペースを_で示す)を入力して実行すると,個々のファイルも表示される。/fが無い場合は,ファイル名は表示されない。この表示は,次のように,テキストファイル eg. result.txt に書き出すこともできる。コマンドプロンプトだとテキストファイル出力はできないとのこと。

PS C:\Users\⋯⋯⋯⋯⋯\sample> tree /f >result.txt

参考: Windows10 でディレクトリ・ファイルのツリー構造(ファイルツリー)を表示する方法

4 実際にやってみて: 特にGrassGISに係わって

PS C:\WINDOWS\SYSTEM32>CD /

と入力して,ルートに入って,tree /fを実行した。ここで確認だが,ディレクトリ境界は,UNIXやmacは,「/」(スラッシュ)だが,Windowsは,「\」(バックスラッシュ)である。日本語キーボードだと,「¥」。PowerShellはこれが混在している。奇妙な感じだ。

PS C:\> tree /f

すごいことになった。ダーと流れ流れて。全ファイルが表示されるのだから大変だ。考え無しだった。/fなしでも大変なのだけど,やってみた。出力ファイルは,

\WINDOWS\SYSTEM32\treeresult1.txt,とした。次式のようである。

PS C:\> tree >\WINDOWS\SYSTEM32\treeresult1.txt

この実行の前に,tree>\WINDOWS\SYSTEM32\treeresult1.txt,と,treeと>の間にスペースを入れなかったので,エラーが出て進まなかった。

で,このコマンド実行後,

PS C:\>

となり,結果が PowerShell ウィンドウに表示されない。ファイル出力の場合は表示されないのだなあ。結果が見えない方が,むしろ,自らのコマンド指定過程が見えて,いいよね。確かに。

————————————————

で,treeresult1.txtを探すために,PowerShellから離れて,Expolorerを開いて,ファイル/ドキュメント,を選ぶと,GIS DataBase, grassdata, Officeのカスタムプレート,という三つのフォルダだけが見える。そして,アドレスバーに,文書ロゴ > PC > ドキュメント >,が見えるので,PCをクリックすると,次のようになる。

図1 PCディレクトリー表示

この図1を見ると,今知りたいディレクトリーは,ブラウザーでいわば変形表示されていない下段の,デバイスとドライブ(1)で,簡単に見つけることができそうである。

図2 ドライブC:\

 図2のフォルダ群のうち,System32\ があるのは,Windowsフォルダのように思われるので,これを選んで開いたのが次の図3である。

図3 \Windows

図3で白い帯で選ばれているフォルダが,System32である。この下方の四つ目にSysWOW64が見える。System32を開くと,先ほど作成したtreeresult1.txtがあるはずである。 なお,SysWOW64の役割については次のサイトが参考になった。
https://wincrunch.com/what-is-syswow64/

 

図4 \System32

図4の下段左端にはファイル数が4435個となっている。ここから文字「tree」で検索すると,

図5  treeで検索した結果

図5に見られる2ファイルのうち,上段のものが,tree構造を表示したテキストファイルで,10.2MBもある。通常のA4用紙で2532ページ,ディレクトリー表示だけの行数で74,965行にも達する。このツリーを観察したが,直接GrassGISに係わるものだけでも,3000行を超える。これを見ても,構造がハッキリとつかめない。

5 GrassGISのデータフォルダについて

 GrassGISのデータフォルダであるgrassdata\,だけで,Windows(C:)ドライブを検索すると,2カ所で見つかった。図6では見にくいが,検索窓上で,grassdata,と入力すると,メニューに,「検索」が表示される。(検索が始まってしまうが,それは無視しつつ)その「検索」をクリックするとメニューが出てくる。その最上部の「分類」をクリックして,「フォルダー」を選ぶ。そうすると,検索窓上が,「grassdata 分類:folder」に変わる。

図6 grassdata\ 検索結果

図6の,上段には,C:\ユーザー\moto\ドキュメント\GIS DataBase\Alaska,下段には,C:\ユーザー\moto\ドキュメント\,が見える。まずは,上段の方をクリックすると,検索が始まる。時間がかかる。mouse PCのためか? 検索窓には,変わらず「grassdata 分類: folder」となっているが。で,検索は終了したが,画面は変わっていない。AC電源を入れていないためか,スリープしてしまい,AC電源に入れると,ヒエー,また検索をしている。Explorerの機能と構造がつかめないなあ。で終わって,図6が現れたのである。PowerShellのテキスト出力の一部を切り取って次に示す。上段のgrassdataは,
GIS DataBase\Alaska\grassdata,という構造になっている。

C:.
続き行
├─Intel
│ └─ExtremeGraphics
│ └─CUI
│ └─Resource
├─PerfLogs
├─Program Files
│ ├─Common Files
│ │ ├─Adobe

削除行群

│ ├─GRASS GIS 7.2.0
│ │ ├─bin
│ │ ├─demolocation
│ │ │ └─PERMANENT
│ │ │ ├─.tmp
│ │ │ │ └─unknown
│ │ │ ├─dbf
│ │ │ ├─sqlite
│ │ │ └─vector
│ │ │ ├─country_boundaries
│ │ │ ├─mysites
│ │ │ └─point
│ │ ├─docs
│ │ │ ├─html
│ │ │ │ ├─barscales
│ │ │ │ ├─colortables

削除行群

│ │ │ ├─GIS DataBase
│ │ │ │ ├─Alaska
│ │ │ │ │ ├─climate
│ │ │ │ │ ├─csv
│ │ │ │ │ ├─gml
│ │ │ │ │ ├─gps
│ │ │ │ │ ├─grassdata
│ │ │ │ │ │ └─alaska
│ │ │ │ │ │ ├─demo
│ │ │ │ │ │ │ ├─.tmp
│ │ │ │ │ │ │ │ └─nature
│ │ │ │ │ │ │ ├─cats
│ │ │ │ │ │ │ ├─cell
│ │ │ │ │ │ │ ├─cellhd
│ │ │ │ │ │ │ ├─cell_misc
│ │ │ │ │ │ │ │ └─gtopo30
│ │ │ │ │ │ │ ├─colr
│ │ │ │ │ │ │ ├─dbf
│ │ │ │ │ │ │ ├─fcell
│ │ │ │ │ │ │ ├─g3dcell
│ │ │ │ │ │ │ ├─hist
│ │ │ │ │ │ │ └─vector
│ │ │ │ │ │ │ ├─airports
│ │ │ │ │ │ │ ├─alaska
│ │ │ │ │ │ │ └─rivers
│ │ │ │ │ │ └─PERMANENT
│ │ │ │ │ │ ├─.tmp
│ │ │ │ │ │ │ └─nature
│ │ │ │ │ │ ├─cats
│ │ │ │ │ │ ├─cell
│ │ │ │ │ │ ├─cellhd
│ │ │ │ │ │ ├─cell_misc
│ │ │ │ │ │ ├─colr
│ │ │ │ │ │ ├─dbf
│ │ │ │ │ │ ├─fcell
│ │ │ │ │ │ ├─hist
│ │ │ │ │ │ ├─vector
│ │ │ │ │ │ └─windows
│ │ │ │ │ ├─projects
│ │ │ │ │ ├─raster
│ │ │ │ │ └─shapefiles
│ │ │ │ ├─nc_spm_08
│ │ │ │ │ ├─landsat
│ │ │ │ │ │ ├─cats
│ │ │ │ │ │ ├─cell

 上のツリーをgrassdatagに注目してまとめると,
C:\Intel\Grass GIS 7.2.0\docs\GIS DATABASE\Alaska\grassdata\alaska,などとなっている。ぼくはまだ,このmouse PCでGrassGISを使っていない。ただソフトをインストールしただけだ。デモ用のコンテンツがインストールされている。mac内のParallels Desktopにもこのヴァージョンはインストールしており,ファイル構造を調べたが,grassdataの位置は同様になっている。デモ用のデータは,Alaskaという名前で,その下位にgrassdataフォルダを持ち,その下位にalaskaなどのlocationが’設定されているということだ。

 次に,下段の,C:\ユーザー\moto\ドキュメント\ を見てみる。これもExplorerでは見ることが出来ないので,Powershellのtreeresult1を見る。

削除行群

│ │ │ ├─GIS DataBase
│ │ │ │ ├─Alaska
│ │ │ │ │ ├─climate
│ │ │ │ │ ├─csv
│ │ │ │ │ ├─gml
│ │ │ │ │ ├─gps
│ │ │ │ │ ├─grassdata
│ │ │ │ │ │ └─alaska
│ │ │ │ │ │ ├─demo
│ │ │ │ │ │ │ ├─.tmp
│ │ │ │ │ │ │ │ └─nature
│ │ │ │ │ │ │ ├─cats
│ │ │ │ │ │ │ ├─cell
│ │ │ │ │ │ │ ├─cellhd
│ │ │ │ │ │ │ ├─cell_misc
│ │ │ │ │ │ │ │ └─gtopo30
│ │ │ │ │ │ │ ├─colr
│ │ │ │ │ │ │ ├─dbf
│ │ │ │ │ │ │ ├─fcell
│ │ │ │ │ │ │ ├─g3dcell
│ │ │ │ │ │ │ ├─hist
│ │ │ │ │ │ │ └─vector
│ │ │ │ │ │ │ ├─airports
│ │ │ │ │ │ │ ├─alaska
│ │ │ │ │ │ │ └─rivers
│ │ │ │ │ │ └─PERMANENT
│ │ │ │ │ │ ├─.tmp
│ │ │ │ │ │ │ └─nature
│ │ │ │ │ │ ├─cats
│ │ │ │ │ │ ├─cell
│ │ │ │ │ │ ├─cellhd
│ │ │ │ │ │ ├─cell_misc

削除行群

│ │ │ ├─grassdata
│ │ │ │ ├─demolocation
│ │ │ │ │ └─PERMANENT
│ │ │ │ │ ├─.tmp
│ │ │ │ │ │ └─unknown
│ │ │ │ │ ├─dbf
│ │ │ │ │ ├─sqlite
│ │ │ │ │ └─vector
│ │ │ │ │ ├─country_boundaries
│ │ │ │ │ ├─mysites
│ │ │ │ │ └─point
│ │ │ │ └─North_Carolina
│ │ │ │ ├─landsat
│ │ │ │ │ ├─cats
│ │ │ │ │ ├─cell
│ │ │ │ │ ├─cellhd
│ │ │ │ │ ├─cell_misc
│ │ │ │ │ │ ├─lsat5_1987_10
│ │ │ │ │ │ ├─lsat5_1987_20
│ │ │ │ │ │ ├─lsat5_1987_30
│ │ │ │ │ │ ├─lsat5_1987_40
│ │ │ │ │ │ ├─lsat5_1987_50
│ │ │ │ │ │ ├─lsat5_1987_60
│ │ │ │ │ │ ├─lsat5_1987_70

 このディレクトリー群は,デモデータNorth Carolina,に係わるものである。North Carolinaフォルダーは,5階層目で,4階層目のgrassdataに附属する形になっている。デモデータのAlaskaとNorth Carolinaは作者が違い,作成されたままがコピペされているので,grassdataのフォルダ位置から見ると,統一が取れていないということになる。North Carolinaの方が形式的には一般に受け容れられる形と言えるのであろう。

 で,ver. 7は,もう不要なので,GrassGISやQgisをインストールした際のmouse PCの管理者ユーザーを削除する決心がついた。ソフトをインストールした際の管理者ユーザーを削除したら,このソフトも消えるのではと危惧して削除しなかったのである。

おわりに

 今後,PowerShellやExploreについて,気がついたことがあれば,追加してゆきたい。

以上,Jan. 26, 27, 2022記。