XREA.COM LogoXREA.COM Ad

Sort

変数の内容を特定の順番に並び替える。文字列としての処理のほかに、数値としての処理も可能。

Sort, VarName [, Options]

Parameters

引数名説明
VarName 対象となるデータを格納した変数名。この変数の内容が並び替えられ、この変数に格納される。
Options 後述するオプションを半角スペース区切りで列挙。

Options

C
文字列として比較する場合に、大文字小文字を区別する
CL
現在のユーザーのロケール設定に沿って大文字小文字の違いを無視する。
日本語環境の場合、全角のアルファベットなども対象となる。
Dx
xに要素の区切り文字を指定する。省略時は改行コードLF(`n)。
N
各要素を数値として比較する。
16進数値や小数値も数値として扱われる。
先頭に数値として扱える部分があれば、その文字列は数値として扱われる。
数値で始まらない文字列は、「0」として扱われる。
Pn
最初の数文字を飛ばして、n番目の文字以降から比較に使用する。
省略時は、1文字目から比較される。
要素の長さがここで指定した文字数よりも小さい場合、その要素は空とみなされる。
Nオプションとともに使用された場合、n文字目以降の数値として扱える部分で比較される。
R
降順で並び替える。(大きい順)
Random
並び順をシャッフルする。
「D」「Z」以外のオプションは無視される。
U
ソート結果から重複を取り除く。
ErrorLevelに削除された項目数が格納される。

「N」オプションが指定された場合、「2」と「2.0」のように数値的に同じ項目は重複とみなされる。
「Random」オプションが指定された場合、シャッフル後に隣り合った項目だけが除去される。
Z
文字列の最後に区切り文字があったとき、その後に空要素が存在するものとみなす。
たとえば、「aaa`nbbbb`nccccc`n」という文字列を並び替えるとき、通常は3つの要素があるとみなされるが、このオプションを指定すると4要素とみなされる。
\
一番最後の「\」以降の文字列で比較される。
ファイルのフルパスのファイル名部分だけで比較したいときに使用する。
「\」を含まない要素は、要素全体で比較される。
このオプションを使用した場合、NオプションとPオプションは無視される。

Remarks

VarNameが「Clipboard」で、クリップボードの内容がExplorerなどでコピーしたファイル群だった場合、Sort実行後のクリップボードの内容はファイル名を改行区切りで列挙した文字列になってしまう。

VarNameに指定したものが環境変数だった場合、新たに同じ名前のスクリプト側の変数が作成され、そこに結果が格納される。
その後VarNameへのアクセスはスクリプト側の変数へのアクセスになってしまう。
下記の例のようにすれば、結果を環境変数に移して、アクセス先を環境変数に戻すことが出来る。

VarSort, MyEnvVar
EnvSet, MyEnvVar, %MyEnvVar%
MyEnvVar = ;スクリプト側の変数を空にすると、環境変数のほうが優先されるようになる

Related

StringSplit, parsing loop, clipboard

Example(s)

MyVar = 5,3,7,9,1,13,999,-4
Sort MyVar, N D,  ; Sort numerically, use comma as delimiter.
MsgBox %MyVar%   ; The result is -4,1,3,5,7,9,13,999

; This example makes Win+C a hotkey to copy files from an open
; Explorer window and put their sorted filenames onto the clipboard:
#c::
Clipboard = ; Must be blank for detection to work.
Send ^c
ClipWait 2
if ErrorLevel <> 0
	return
Sort Clipboard
MsgBox Ready to be pasted:`n%Clipboard%
return