ラベル PowerShell の投稿を表示しています。 すべての投稿を表示
ラベル PowerShell の投稿を表示しています。 すべての投稿を表示

2015年12月19日土曜日

【PowerShell】フォルダ配下に格納されているファイルのファイル名を取り出す。

タイトル通りのことをまた使うかも知れないのでメモ

こんな感じのフォルダ構成から格納されているファイルのファイル名のみを取り出す。

フォルダ構造

PS D:\@temp> ls -r


    ディレクトリ: D:\@temp


Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d----        2015/12/19     23:47            1
d----        2015/12/19     23:47            2


    ディレクトリ: D:\@temp\1


Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d----        2015/12/19     23:47            1_1
d----        2015/12/19     23:47            1_2


    ディレクトリ: D:\@temp\1\1_1


Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---        2015/12/19     23:47          0 b.txt


    ディレクトリ: D:\@temp\2


Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---        2015/12/19     23:47          0 a.txt



「ls -r」で配下のフォルダ・ファイルを取得、「Where-Object { $_.Attributes -ne "Directory"} 」でディレクトリを除外、「%{ $_.Name}」でファイル名のみを表示。

フォルダ配下のファイルのファイル名のみ取り出す

PS D:\@temp> ls -r | Where-Object { $_.Attributes -ne "Directory"} | %{ $_.Name}
b.txt
a.txt


一年に2・3回は使うはず。

2015年12月12日土曜日

【PowerShell】Windowsでgrepもどき その2

Windows&PowerShellでgrepもどきをやるさいのメモ その2
※その1はこっち

「select-string」のみだと結果に、ファイル名とヒットした行数が入る。



PS D:\@temp> ls -r | select-string "aaaa"

test.txt:1:aaaabbbb
test.txt:5:eeeeaaaa



「select-string」の結果から「Line」プロパティを取り出すことでヒットした行のみを取り出すことができる。



PS D:\@temp> ls -r | select-string "aaaa" | %{ $_.Line }
aaaabbbb
eeeeaaaa


その3はコッチ

2015年10月8日木曜日

【PowerShell】StreamWriterでファイル書き込み

「PowerShell」で「.net」の「StreamWriter」を使ってファイルに書き込む際のメモ

構文
PS D:\@temp> $writer = New-Object System.IO.StreamWriter('[ファイル名]', 追記・上書き切り替えのboolean値,[Text.Encoding]::GetEncoding('ファイルのエンコード'))

PS D:\@temp> $writer.WriteLine("[書き込む文字列]")

PS D:\@temp> $writer.Close()

以下解説、

「$writer = New-Object System.IO.StreamWriter('[ファイル名]', 上書きON/OFFのboolean値,エンコード)」で書き込み用のストリームを開く。

第一引数の「[ファイル名]」は書き込むファイルのファイル名。

第二引数の「追記・上書き切り替えのboolean値」は「$true」で追記、「$false」で上書き。

第三引数のエンコードは「shift_jis」とか「utf-8」を指定する。
ちなみに「utf-8」だとBOMが付くので、BOM無しを指定する場合は
「[Text.Encoding]::GetEncoding('ファイルのエンコード')」の代わりに
「 (New-Object System.Text.UTF8Encoding($false))」を指定する。


2015年9月7日月曜日

【PowerShell】PowerShellで.NETのMath クラスを呼ぶ

PowerShellで.NETのMath クラスを呼ぶ時の備忘
「[math]::メソッド」で呼べる。

呼べるメソッドはココを参照。


円周率
PS > [math]::pi
3.14159265358979

2値を比較し大きいほうの値を得る
PS > [math]::max(10,20)
20

2値を比較し小さいほうの値を得る
PS > [math]::min(10,20)
10

sin(π/2)
PS > [math]::sin([math]::pi/2.0)
1

for文やらファイル出力と組み合わせてテストデータを作る時に便利。

2015年8月21日金曜日

【PowerShell】PowerShellで「wget」

PowerShell 4.0以降で「wget」が使えるらしいのでやってみた時のメモ


構文
PS>wget -uri URI -outfile 出力するファイル名

「Invoke-WebRequest」のエイリアスらしく他にもいろいろできそう。

とりあえずgoogleのトップページでも落としてみる。

やってみた
PS>wget -uri https://www.google.co.jp/webhp?hl=ja -outfile test.html 

カレントディレクトリにファイル名「test.html」でダウンロードできた。

2015年8月6日木曜日

【PowerShell】バージョンを確認する&「PowerShell 4.0」のインストール。

「PowerShell」のバージョンを確認方法とPowerShell4.0のインストールのメモ


  1. 「PowerShell」のバージョン確認


  2. 「PowerShell」のバージョンはシェル変数「$PSVersionTable」を表示することで確認できる。

    実行例
    PS > $PSVersionTable

    Name                           Value
    ----                           -----
    CLRVersion                     2.0.50727.5485
    BuildVersion                   6.1.7601.17514
    PSVersion                      2.0
    WSManStackVersion              2.0
    PSCompatibleVersions           {1.0, 2.0}
    SerializationVersion           1.1.0.1
    PSRemotingProtocolVersion      2.1


    「PSVersion」の値がPowerShellバージョン。

    PowerShell 1.0に「$PSVersionTable」は存在しないらしいので、エラーが出たら「1.0」


  3. 「PowerShell 4.0」のインストール

  4. 「PowerShell 4.0」は「Windows Management Framework 4.0」に入っているので「Windows Management Framework 4.0」をインストールする。
    ※Windows8.0にはインストールできない。Windows8.1は標準搭載。
    1. 「Windows Management Framework 4.0」のダウンロード
    2. ココからインストーラーをダウンロードする。 
      • Windows6.1-KB2819745-x64-MultiPkg.msu : Windows7 64bitの場合 
      • Windows6.1-KB2819745-x86-MultiPkg.msu : Windows7 32bitの場合 
    3. ダウンロードしたインストーラを実行してインストール(再起動が必要)。

    「PowerShell 4.0」のインストール後に「$PSVersionTable」を表示すると以下のようになる。 

    実行例
    PS > $PSVersionTable

    Name                           Value
    ----                           -----
    PSVersion                      4.0
    WSManStackVersion              3.0
    SerializationVersion           1.1.0.1
    CLRVersion                     4.0.30319.0
    BuildVersion                   6.3.9600.16406
    PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0}
    PSRemotingProtocolVersion      2.2


2015年8月4日火曜日

【PowerShell】ランダムな値を得る。

Windows&PowerShellでランダムな値を作るときのメモ。

「Get-Random」でランダムな値を得ることが可能。

構文
PS D:\@temp> Get-Random

PS D:\@temp> Get-Random -Minimum 最小値 -Maximum 最大値

PS D:\@temp> Get-Random 配列


「Get-Random」は省略して「random」でもOK。

「Get-Random」単体で「0」から「2,147,483,647」までの値を得られる、

「Get-Random -Minimum 最小値 -Maximum 最大値」で「最小値」から「最大値」までの値を得られる。

最小値か最大値にに小数点を含んだ値を入力すると得られる値が浮動小数点数になる。


「Get-Random 配列」で「配列内の値」をランダムで返す。



PS D:\@temp> Get-Random
239611095

PS D:\@temp> Get-Random
1693143731

PS D:\@temp> Get-Random -Minimum 0 -Maximum 99
73
PS D:\@temp> Get-Random -Minimum 0 -Maximum 99
22

PS D:\@temp> Get-Random -Minimum -2.0 -Maximum 2.0
1.6976443564974

PS D:\@temp> Get-Random -Minimum -2.0 -Maximum 2.0
-1.35677739947884

PS D:\@temp> Get-Random @('O型', 'A型', 'B型', 'AB型')
O型

PS D:\@temp> Get-Random @('O型', 'A型', 'B型', 'AB型')
A型

試験データを作るとき等に便利。

2015年7月31日金曜日

【PowerShell】スクリプト実行時の権限変更について

PowerShellのスクリプトファイル(ps1ファイル)はデフォルトの権限設定では動かないため権限の設定変更についてのメモ

構文
PS C:\> Set-ExecutionPolicy 設定する権限


設定できる権限は以下の通り


  • Restricted: 実行禁止。デフォルトの設定。
  • AllSigned: 署名があれば実行可能
  • RemoteSigned: ローカルのファイルは実行可能。ネットから落としたファイルは署名があれば実行可能。
  • Unrestricted: 全部実行可能、ネットから落としたファイルのみ警告がでる。
  • Bypass: 全部実行可能、警告メッセージもでない。
「RemoteSigned」にしておけば普段使いには特に問題がない。


2015年7月26日日曜日

【PowerShell】Windowsでgrepもどき

Windows&PowerShellでgrepもどきをやったときのメモ
基本は「Select-String」でOK。

カレントフォルダの配下をgrepする時は下記でいける。

構文
PS D:\@temp> ls -r | Select-String "[正規表現]"

PS D:\@temp> ls -r | Select-String "[正規表現]" -Encoding "OEM"


「ls -r 」で現在いるフォルダの配下を再帰的に検索。
「Select-String」で一致する行を検索。
SJISを含むテキストで日本語を検索したいときは「-Encoding "OEM"」を付ける


PS D:\@temp> ls -r | Select-String  'a{4}'

1\a.txt:1:aaaaa
1\a.txt:6:aaaaa
2\b.txt:1:aaaaa


PS D:\@temp> ls -r | Select-String  'あ{4}' -Encoding "OEM"

1\あ.txt:1:ああああ
2\い.txt:1:ああああ
2\い.txt:6:ああああ

その2はこっち