Skip to content

Instantly share code, notes, and snippets.

@kjunichi
Last active January 26, 2018 02:04
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kjunichi/7868978 to your computer and use it in GitHub Desktop.
Save kjunichi/7868978 to your computer and use it in GitHub Desktop.

バージョンを調べる

$PSVersionTable

改行コード

[Environment]::NewLine

テキストフィルターの雛形

$inPath="C:\Users\foo\Documents\memo"
$outPath="C:\Users\foo\Documents\memo_md"

function myFilter($inText) {
	$outText=""
	
	for ( $i = 0; $i -lt $inText.Length; $i++ ) {
		$line = ([string]$inText[$i]) -creplace "^=== *","### "
		$line = $line -creplace "^== *","## "
		$line = $line -creplace "^= *","# "
		if($i -eq 0) {
			$outText = $line
		} else {
			$outText = $outText + "`r`n" + $line
		}
	}
	return $outText
}
$count=0
$files = get-childitem $inPath -include *.txt -recurse
foreach($file in $files) {
if($count -gt 10) {
#return
}
	# $file.fullname
	$content = (Get-Content $file)
	if($content) {
		# ファイルに出力する
		Add-content -Path ($outPath+"\"+($file.basename)+".md") -Value (myFilter $content).toString() -Encoding UTF8
	}
	$count=$count+1
}

壁紙を変える為に必要な事

Win32APIにあるSystemParametersInfo関数を呼び出す必要がある。

v2以降はAdd-Typeで行ける。

v1では http://www.leeholmes.com/blog/2006/07/21/get-the-owner-of-a-process-in-powershell-%e2%80%93-pinvoke-and-refout-parameters/

コントロール+Cを扱うには

[console]::TreatControlCAsInput = $true
if ([console]::KeyAvailable) {
	$key = [system.console]::readkey($true)
	if (($key.modifiers -band [consolemodifiers]"control") -and($key.key -eq "C")) {
		"Terminating..."
		break
	}
}

コマンドライン(DOS窓)で実行するには

powershell.exe -noexit c:\work\hoge.ps1

コメントは#と<# hoge #>

指定したフォルダ内のファイル一覧の取得

$a = get-childitem c:\foo\bar

foreach( $b in $a ) {
	$b.name
	
}

拡張子で絞り込む場合

$a = get-childitem c:\foo\bar\* -include *.txt

ファイルの読み込み

gc hoge.txt

Get-ContentのRawオプション

v3から追加された。

改行も取り込む。このオプションがないと行単位で読み込まれたオブジェクトなる。

文字列の切出し

select-string

"hogafuga<starttag aabas><a></a><b>" -match '(<starttag .*)'

文字コードを指定してファイルを読み込む

Get-Content -Encoding UTF8 fuga.txt

XML関連

文字列のXMLオブジェクト化

$xmlDoc = [xml]"<root><child1>1</child1><child2>2</child2></root>"

特定のタグの値を取得する

XPathを使う

$navi = [Xml.Xpath.XPathNavigator] $xmlDoc.CreateNavigator()
$navi.MoveToFirstChild()
$nodes = $navi.Select("/tag1/tag2[@param=val]",$nsmgr)
While ( $nodes.MoveNext() ){

	$nodes.Current.Value
	$nodes.Current.SetValue("hoo")
}

Node.jsっぽいものをPowerShellで作るには

  • 真面目に実装する
  • libuvのDLLを叩けばよい?
  • 動的にExeのイメージをDLして実行してしまうw

コマンドライン引数を参照するには

$Args[0]

関連記事

関連Gist

Link

関連

アクセス解析タグ

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment