Windows で PowerShell を
簡単に起動する方法。
エクスプローラー上で,
「Shiftキーを押しながら
フォルダを右クリック」
すれば,
そのフォルダをカレントディレクトリとして
パワーシェルのダイアログを起動できる。

Windows で PowerShell を
簡単に起動する方法。
エクスプローラー上で,
「Shiftキーを押しながら
フォルダを右クリック」
すれば,
そのフォルダをカレントディレクトリとして
パワーシェルのダイアログを起動できる。
ファイル内の文字列を検索
▶コマンドプロンプトでは…
findstr /n /s "社外秘" *.txt > 社外秘リスト.txt
文字コードはSJISのみ。
▶PowerShellでは…
select-string "社外秘" *.txt | % { $_.Line } | Out-File -Encoding utf8 .\社外秘リスト.txt
UTF-8も検索可能!
Shift-JISではない,
別の文字コード(UTF-8など)で書かれた
テキストファイルの内容を
全行読み込んで表示するには:
https://k-side.hatenablog.jp/e...
get-content -encoding utf8 ファイル名.txt
get-contentには
catというエイリアスもある。
インストールされているPowerShellの
バージョンを調べる…
$PSVersionTable
psvまで打ってTABキーを押せば
残りは補完される。
実行結果の例:
PSVersion 5.1.19041.1023
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
文字コードUTF-8で書かれた
2つのテキストファイルについて,
差異がある行番号を
クリック一発で確認できるようにするには…
下記をhoge.batで保存すればよい。
PowerShell -command "diff ( cat -encoding utf8 a1.txt) (cat -encoding utf8 a2.txt)"
@pause
① PowerShellのコードを保存した .ps1 ファイル
② ①を呼び出すための .bat ファイル
の2つを分けるのが面倒な場合…
バッチファイルの中に直接
PowerShellのスクリプトを書ける。
rem ファイル比較
PowerShell -command "diff (cat old.txt) (cat new.txt)"
@pause
a.ps1というファイル内に
PowerShellのスクリプト・コードを書く。
それを実行するため
b.batというバッチファイルを作り
下記の内容を書く。
powershell -NoProfile -ExecutionPolicy Unrestricted .¥a.ps1
@pause
b.batをダブルクリックすれば
a.ps1が実行される。
PowerShellのスクリプト・コードを
ファイルに保存して,
ダブルクリックするだけで実行可能にしたい。
よくあるのが
拡張子「.ps1」のファイルだが,これだと
実行ポリシーの制限の厳しさゆえ
ダブルクリックだけでの実行は不可能。
2つあるテキストファイルの
差分を検出して表示:
diff (cat ファイル名1) (cat ファイル名2)
↑
これでもSJISで表示され
文字化けする場合がある。
明示的に文字コード指定するには…
diff ( cat -encoding utf8 ファイル名1) (cat -encoding utf8 ファイル名2)
PowerShellでのdiffコマンドの正体:
Compare-Object は標準で
・diff
・compare
でエイリアス登録されている。
cat コマンドは
Get-Content のエイリアス。
cat の結果を diff すると
ファイル内容どうしを比較できる。
#コマンドプロンプト・BATを使いこなす 1
Windowsで,あえてCUIの
・コマンドプロンプトやBAT
・PowerShell
を使う理由は?
目玉は主に
①ファイル処理系
②ネットワーク系
一括処理,深い部分の調査・設定変更などできて便利!
※PowerShellは下記タグで紹介してます
#PowerShell入門
2つあるテキストファイルの
差分を表示するコマンド…
・コマンドプロンプトの場合:
fc ファイル名1 ファイル名2
SJISのみ。
・PowerShellの場合:
diff (cat ファイル名1) (cat ファイル名2)
UTF8で差分を検出。
ただし行番号などは無し。
select-string "社外秘" *.txt > 社外秘リスト.txt
→無駄な改行が混入されながら
Unicodeでファイル書き込み。
select-string "社外秘" *.txt | % { $_.Line } > 社外秘リスト.txt
→無駄な改行が混入せず,1行につき1内容で
Unicodeでファイル書き込み。
select-string "社外秘" *.txt
→検索ヒットしたファイル名と行番号付き。
各行の内容は,画面端で折り返しながら
行内容をぜんぶ表示。
select-string "社外秘" *.txt | select line
→ファイル名と行番号は表示されない。
検索結果の各行末は「...」で省略される
echo ほげ | out-file -encoding utf8 hoge.txt
ここで指定した「UTF8」は
BOM付きのUTF-8となる。
BOM無しのUTF-8 (UTF8N) で
ファイル出力する方法は,かなり面倒。
※下記サイトを参照
https://blog.shibata.tech/entr...
.
・リダイレクトでファイル書き込みすると
Unicode(UTF-16)になってしまう。
echo ほげ > hoge.txt
・リダイレクトの代わりに,
パイプ(|)と out-file コマンドで
文字コードを指定してファイル出力できる。
echo ほげ | out-file -encoding utf8 hoge.txt
Windows:
#コマンドプロンプト・BATを使いこなす
#WSH・JScriptでバッチ作成
#PowerShell入門
#Windowsパソコンのメンテナンス
Linux:
#linuxの基礎を勉強
エンジニア論:
#バッチ職人になろう
豆知識: "Unicode" と "UTF-16" の違い
http://yanok.net/2016/03/utf-1...
・昔の文書では,"Unicode" は16ビット固定長の符号化方式(16ビット版ASCII)を指す
・現在 "Unicode" は16ビット固定長ではなく,サロゲートペア機構などをもつ UTF-16 を指す (PowerShellのデフォルト)
echoコマンドとリダイレクトを使い,
文字を表示してファイルに書き込む:
echo ほげ > hoge.txt
・「ほげ」という文字列がファイルに書き込まれる。
・ただし,文字コードはSJISやUTF-8ではなく
BOM付きUnicode(UTF-16)で出力される。
Windows:
#コマンドプロンプト・BATを使いこなす
#WSH・JScriptでバッチ作成
#PowerShell入門
#Windowsパソコンのメンテナンス
Linux:
#linuxの基礎を勉強
エンジニア論:
#バッチ職人になろう