echoコマンドとリダイレクトを使い,
文字を表示してファイルに書き込む:
echo ほげ > hoge.txt
・「ほげ」という文字列がファイルに書き込まれる。
・ただし,文字コードはSJISやUTF-8ではなく
BOM付きUnicode(UTF-16)で出力される。

echoコマンドとリダイレクトを使い,
文字を表示してファイルに書き込む:
echo ほげ > hoge.txt
・「ほげ」という文字列がファイルに書き込まれる。
・ただし,文字コードはSJISやUTF-8ではなく
BOM付きUnicode(UTF-16)で出力される。
Windows:
#コマンドプロンプト・BATを使いこなす
#WSH・JScriptでバッチ作成
#PowerShell入門
#Windowsパソコンのメンテナンス
Linux:
#linuxの基礎を勉強
エンジニア論:
#バッチ職人になろう
ファイル内検索結果を
リダイレクトでファイル出力する方法:
select-string "検索キーワード" *.txt > 検索結果.txt
・コマンドプロンプトと同じく
> でリダイレクト可能。
※しかしこのままだと,出力結果に
妙な位置で改行が混入する。
select-string -encoding default "検索キーワード" *.txt
・「-encoding default」というオプションを付ければSJISでキーワード検索。
※「オプションを付けない」という意味でのデフォルト検索はUTF8なので,「デフォルト」の意味が紛らわしい
select-string コマンドの使い方:
select-string "検索キーワード" *.txt
・フォルダ内の全テキストファイル内から
検索キーワードをUTF8で検出。
・ファイル名と行番号が左端に表示され
発見された行は,適宜改行されて画面表示される。
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 すると
ファイル内容どうしを比較できる。
Windows作業の効率を引き上げる!『ゼロから始めるPowerShell入門』の魅力とは #東京都 #千代田区 #インプレス #技術書典 #PowerShell入門
Windows管理を自動化するためのPowerShell Coreについて解説した新刊が登場。初心者にやさしく、広範な内容で学ぶチャンス!
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...
.