Windows 11 コマンドプロンプト UNZIP 解凍 / 圧縮

Windows 10 / 11 で コマンドプロンプトから ZIP圧縮・解凍処理を行う場合

ZIP.EXE は デフォルトインストールされていない。

それにわざわざZIP/UNZIPを職場の多くのPCにインストールしていくのは気が遠くなる。

しかし Windowsの標準で tar.exeが 入っている。

コマンドプロンプトから下記 “where tar” とコマンド入力すると tar.exe の場所が 探せる。

where tar

コマンドプロンプトから tar で ZIPファイルを解凍する

tar で zip圧縮はできないようだが ZIPファイルの解凍はできるようです

tar xzvf 圧縮ファイル.zip

パスワード付きのZIPファイルも上記のコマンドで同じコマンドで解凍できる

解凍時に “Enter passphrase:”と表示されるので パスワード入力しないといけない

tar xzvf コマンド

tar コマンドで GZIP圧縮する

tarで ZIP圧縮はできないが GZIP(tar.gz)で圧縮できる

tar czvf 圧縮ファイル.tar.gz 圧縮したいフォルダ

上記のコマンドも単体では パスワードをつけることはできない

PowerShellを使って ZIP圧縮

tarでは ZIP圧縮できないが PowerShellでは “Compress-Archive“を使ってのZIP圧縮可能です

Compress-Archive -Path フォルダ名 -DestinationPath 圧縮ファイル名.zip -Force

PowerShellで ZIPファイルを解凍する

PowerShellでZIPファイルを解凍する場合は Expand-Archiveを使います

Expand-Archive -LiteralPath '圧縮ファイル.zip' -DestinationPath '.\' 

tarコマンドも PowerShell いづれも パスワードのオプションはなかった

エラー (アクティブ) CS0012 型 ‘ReadOnlySpan<>’ は、参照されていないアセンブリに定義されています

C# Visual StudioJsonSerializer を使う場合 System.Text.Json を 参照で追加するが

下記のエラーが出る場合がある

エラー (アクティブ)	CS0012	型 'ReadOnlySpan<>' は、参照されていないアセンブリに定義されています。アセンブリ 'System.Memory, Version=4.0.1.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' に参照を追加する必要があります。	
System.Memory

System.Memory の 追加も必要ということだった

C# 配列 ⇔ Listへ変換

C# 配列 ⇔ Listへ変換

List<T>から配列や その逆 変換する方法

配列 → List<T>に 変換

変換というよりは List<T>を新たに作成し AddRange()します。

int[] iArray = new int[]{1,2,3}; // int配列

List<int> iList = new List<int>(); //新たにListを作る
iList.AddRange(iArray);
foreach(var i in iList)
    Console.WriteLine(i);

List<T> → 配列 に 変換

Listから配列に変換の場合 ToArray()を使います。

List<int> iList = new List<int>(){1,2,3}; // Listを作る
int[] iArray = iList.ToArray(); //ToArrayで配列に変換
foreach(var i in iArray)
    Console.WriteLine(i);