Muni Bus

パソコンの操作方法や設定方法を忘れないようにメモしています。ブログを一回引っ越ししているので、所々表示がかなり乱れています・・・

PowerShell

【PowerShell】ディレクトリ内のファイルやディレクトリを一覧表示する

Get-ChildItemコマンドレットを使う。-Pathオプションに一覧表示したいディレクトリを指定する。 PS > Get-ChildItem -Path C:\Windows\IME ディレクトリ: C:\Windows\IME Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 2024/03/13…

【PowerShell】文字列のパーセントエンコーディングを行う

HttpUtilityクラスのUrlEncodeメソッドを使うと、パーセントエンコーディングすることができる。逆にUrlDecodeメソッドはデコードすることができる。あらかじめAdd-TypeコマンドレットでSystem.Drawing名前空間を現在のセッションに追加しておく必要がある。…

【PowerShell】Windows版の最新版を入手する

PowerShellの最新版は、マイクロソフトの公式ページから無料でダウンロードすることができる。https://learn.microsoft.com/ja-jp/powershell/scripting/install/installing-powershell-on-windows 2024年3月時点の最新バージョンは7.4.1。

【PowerShell】複数のテキストファイルを連結する

Get-ChildItemコマンドレット、Get-Contentコマンドレット、Set-Contentコマンドレットを組み合わせて使う。以下は二つのCSVファイルを連結してall.csvに書き出した例。連結して出力したいだけの場合は単純に組み合わせればよい。例えば各ファイルの一行目だ…

【PowerShell】ファイルの拡張子を一括で更新する

Get-ChildItemコマンドレットとRename-Itemコマンドレットを組み合わせて使う。以下はカレントディレクトリに置かれた拡張子.tifのファイルの拡張子をすべて.pngに更新した例。 PS > Get-ChildItem *.png | Rename-Item -NewName {$_.Name -replace "\.png$"…

【PowerShell】パスを分解する

Split-Pathコマンドレットを使う。最後の例のとおり、実在しないパスでもディレクトリでも操作は可能で、文字列を単純に分割しているだけ。 PS > $s = "C:\Windows\System32\calc.exe" PS > Write-Host $s C:\Windows\System32\calc.exe PS > Split-Path $s …

【PowerShell】正規表現を使用してファイル名を表す文字列から拡張子を取り除く

以下、拡張子が0~4個あるファイル名を表す文字列から、拡張子だけを取り除いた例。 PS > $s = "和多田.txt", "和多田.美咲.txt" PS > $s += "和多田.美咲.メイショウドトウ.txt" PS > $s += "和多田.美咲.メイショウドトウ.かわいい.txt" PS > Write-Output…

【PowerShell】文字列をバイト列で表示する

以下の9つの漢字(文字)からなる文字列を、バイト列で表示する。 漢字 JISコード Shift_JIS UTF-8 Unicode 1 和 0x4f42 0x9861 0xe5928c U+548C 2 多 0x423f 0x91bd 0xe5a49a U+591A 3 田 0x4544 0x9363 0xe794b0 U+7530 4 美 0x487e 0x94fc 0xe7be8e U+7F8…

【PowerShell】いろいろな文字コードのテキストファイルを簡単に読み込む

Get-Contentコマンドレットに-Encodingオプションを付けて文字コードを指定すれば、簡単に読み込むことができる。とりあえず、3種類の文字コード(Shift_JIS、BOM付きUTF-8、BOM付きリトルエンディアンUTF-16)からなるテキストファイルを作成する。 PS > "…

【PowerShell】いろいろな文字コードのテキストファイルを簡単に作成する

パイプラインを使用してOut-Fileコマンドレットにテキストを与え、-Encodingオプションに文字コードを指定してファイルに書き込めばよい。以下はそれぞれ文字コードShift_JIS、UTF-8、UTF-16にしてファイルに書き込んだ例。 PS > "石見舞菜香かわいい" | Out…

【PowerShell】StreamWriterクラスを使ったファイルへの書き込み

New-Objectコマンドレットを使ってSystem.IO名前空間のStreamWriterクラスのオブジェクトを作成する。第一引数には書き込むファイルのファイル名を指定する。指定したファイルの有無にかかわらずファイルに一から書き込む場合は第二引数に$falseを指定する。…

【PowerShell】.NETオブジェクトで利用できる文字コードを確認する

EncodingクラスのGetEncodingsメソッドを使う。バージョン5の環境で実行した結果は以下のとおり。 PS > $PSVersionTable.PSVersion Major Minor Build Revision ----- ----- ----- -------- 5 1 19041 3930 PS > [Text.Encoding]::GetEncodings() CodePage N…

【PowerShell】base64に基づく符号化を行う

certutilコマンドを使う。以下はあらかじめ作成しておいたファイルtext.txt(文字コード:Shift_JIS、改行コード:CR+LF)の中身について行った例。 PS > Get-Content text.txt 石見舞菜香かわいい ライスシャワーもかわいい 和多田美咲かわいい メイショウ…

【PowerShell】文字列から一部の文字列を抜き出す

Substringメソッドを使う。以下はumamusume.txtという5行からなるテキストファイルを使用して、各行から指定した分の文字列を抜き出した例。第1引数には抜き出す文字列の開始位置を指定し、第2引数には抜き出す文字列の長さを指定する。開始位置は0から始ま…

【PowerShell】テキストファイルのすべての行の末尾に同じ文字列を追加する

ただ単に追加するだけであれば、Get-Contentコマンドレットの出力をパイプラインでForEach-Objectコマンドレット(エイリアス:%)に渡して、1行ずつ文字列を追加して、それをさらにパイプラインで次に渡せばよい。以下はあらかじめ用意しておいたテキストフ…

【PowerShell】テキストファイルを指定の行数のテキストファイルに分割する

Get-Contentコマンドレット(エイリアス:cat)の-ReadCountオプションを使う。このオプションに自然数を指定すると、行数をその数にしたオブジェクトに分解するため、これを順次ファイルに出力すればよい。以下はあらかじめline10.txtという10行からなるテ…

【PowerShell】テキストファイルを読み込むときに先頭を指定行分読み飛ばす

Select-Objectコマンドレットの-Skipオプションを使う。-Skipオプションに指定した数値の分だけ先頭行を読み飛ばす。与えたオブジェクト以上の行数を指定すると、何も返さなくなる。以下はumamusume.txtという5行からなるテキストファイルを使用して先頭行を…

【PowerShell】変数とは

数値や文字などの計算や各種処理に扱う値を格納する入れ物を変数という。PowerShellではコマンドレットの実行結果のオブジェクトも格納することができる。変数名は$記号から始まる英数字で名前を定義する。この変数名では大文字と小文字を区別しない。変数…

【PowerShell】ZIP形式のアーカイブファイルを作成(展開)する

作成にはCompress-Archiveコマンドレット、展開にはExpand-Archiveコマンドレットを使う。以下では、約13MBのファイルを2つ作成し、その2つのファイルから成るアーカイブファイルを作成し、その2つのファイルを削除し、作成したアーカイブファイルから2つの…

【PowerShell】TSVファイルの読み込み

Import-Csvコマンドレットを-Delimiterオプションに"`t"を指定して実行する。最初に文字列型変数の配列を作成してTSVファイルに書き込む。 PS > $lns = @() PS > $lns += "8`tウオッカ`t大橋彩香" PS > $lns += "30`tライスシャワー`t石見舞菜香" PS > $lns …

【PowerShell】簡単な短いテキストファイルを作成する

ヒア文字列を使って文字列を作成し、その文字列をOut-Fileコマンドレットでファイルに書き込めばよい。 PS > @" >> 30 >> ライスシャワー >> 石見舞菜香 >> >> "@ | Out-File -NoNewline temp.txt PS > Get-Content .\temp.txt 30 ライスシャワー 石見舞菜香…

【PowerShell】郵便番号の一覧を得る

以下は2023年12月下旬に、日本郵便株式会社のウェブサイトから郵便番号の情報が納められたファイルをダウンロードして、郵便番号とそれに対応する町域等をデータフレームにした例。UTF-8形式のファイルをダウンロードしている。ダウンロードしたファイルはテ…

【PowerShell】短い簡単なテキストファイルを作成する

文字列型の変数で配列を作り、それをOut-Fileコマンドレットにパイプラインで渡してファイルに出力すればよい。-Encodingオプションにdefaultを指定すると文字コードをシフトJISで出力する。デフォルトでは各要素を出力した後にCR+LFを加えて、一要素一行と…

【PowerShell】ハッシュテーブル(連想配列)を使う

PowerShellには配列と似たような機能として、ハッシュテーブル(連想配列)というものがある。機能として、一つ以上の値をまとめて格納して扱うことができる変数だが、配列は各要素を取り出す際にインデックス(0から始まる連番)で指定するのに対して、ハッ…

【PowerShell】テキストファイルから文字列を検索する

Select-Stringコマンドレットを使う。Select-StringコマンドレットはUNIXのコマンドの一つであるgrepと同じような機能を提供するが、戻り値がMatchInfoオブジェクトのため、grepコマンドのデフォルトの状態とは異なり、マッチした行だけが表示されるわけでは…

【PowerShell】配列の要素数を得る

LengthプロパティかそのエイリアスであるCountを参照する。 PS > $n = 1..3 PS > $n.Length 3 PS > $n.Count 3

【PowerShell】数列を作成する

..演算子を使う。初項(第1項)と末項(最後の項)を指定する。公差(初項からの増分の定数)は1か-1のみで、初項と末項の値により連続するように自動的に決まるため、任意の値を指定することはできない。ForEach-Objectコマンドレット(エイリアスは%)を使…

【PowerShell】指定のフォルダー以下に存在する、指定のファイル名のファイルとフォルダー名のフォルダーが置かれているフォルダーの更新日時をすべて今の日時にする

以下は、共有フォルダ―\\server1\work1以下に存在する、名前がa~zのファイルとディレクトリについて、それらが置かれているフォルダーの更新日時を今の時間に修正する例。 要するに、\\server1\work1\aというファイルやフォルダーがあれば、フォルダー\\ser…

【PowerShell】指定のフォルダー以下に存在する、指定のファイル名のファイルとフォルダー名のフォルダーの更新日時をすべて今の日時にする

以下は、共有フォルダ―\\server1\work1以下に存在する、名前がa~zのファイルとディレクトリについて、すべて更新日時を今の時間に修正する例。 PS > Get-ChildItem -Path \\server1\work1 -Include [a-z] -Recurse | sp -Name LastWriteTime -Value $(Get-D…

【PowerShell】書式文字列を使って変数の値から文字列を作成する

-f演算子を使う。 PS > $mei = "Kaname" PS > $sei = "Buccaneer" PS > "{0} {1}" -f $mei, $sei Kaname Buccaneer PS > "{0, 10} {1}" -f $mei, $sei Kaname Buccaneer PS > "{0, 2} {1}" -f $mei, $sei Kaname Buccaneer 実数も扱うことができる。 PS > $d…