PowerShellで漢字をカタカナに変換する

| 2009年6月24日水曜日
漢字をひらがなやカタカナに変換したくなったので調べてみた。
簡単に変換するにはExcelのルビを振る関数でPhonetic関数を使うのが簡単そうだ。

ただし、「あぁアアAaAa1」を変換すると全部全角の「アァアアAaAa1」になってしまうので注意。

--- ConvertTo-KanjiFromKatakana.ps1 ---
  1. function global:ConvertTo-KanjiFromKatakana([string]$word) {  
  2.         $excel = New-Object -comObject Excel.Application  
  3.         $result = $excel.GetPhonetic($word)  
  4.           
  5.         #Excel COM Objectを解放  
  6.         [void][System.Runtime.InteropServices.Marshal]::ReleaseComObject($excel)  
  7.           
  8.         return $result  
  9. }  

C#でエクスプローラーで表示されるファイルの並び順と同じにソートしてみる

| 2009年6月20日土曜日
必要があったのでメモ。

IComparerを使ってArray.Sort()でソートする。

使い方は、


string[] list = { "01.txt", "1.txt", "02.txt" }
Array.Sort(list, new ExplorerSortComparer());

こんな感じ
--- ExplorerSortComparer Class ---

public class ExplorerSortComparer : IComparer {
[DllImport("shlwapi.dll", CharSet = CharSet.Unicode, ExactSpelling = true)]
public static extern int StrCmpLogicalW(string str1, string str2);

public int Compare(object obj1, object obj2) {
return StrCmpLogicalW((string)obj1, (string)obj2));
}
}

VBScriptでゴミ箱のファイルを削除してみる

|
PowerShellではできたので、VBScriptで指定日以前にごみ箱に捨てたファイルを削除してみる。
PowerShellがもっと流行れば、VBScriptから逃げられるんだけど…その日はまだ遠そうだ。

※ごみ箱の中のフォルダを消そうとすると「実行時エラー:・・・」となるので一度Tempフォルダに移動してからcmdのrmdirで消している。

3日前に削除したファイルをけすなら、cmdなどから

> CScript /nologo DeleteGarbabeFiles.vbs /Date:3

とする。
/Date:3 をつけなければ、一週間前までのを削除する。

--- DeleteGarbabeFiles.vbs ---

If WScript.Arguments.Named("Date") = "" Then
nDays = 6
Else
nDays = Int(WScript.Arguments.Named("Date"))
End If

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objShell = CreateObject("Shell.Application")
Set WshShell = CreateObject("WScript.Shell")
Set trash = objShell.NameSpace(10)

For Each item in trash.Items()
If Int(Now() - CDate(trash.GetDetailsOf(item, 2))) >= nDays Then
If objFSO.FileExists(item.Path) Then
objFSO.DeleteFile item.Path
ElseIf objFSO.FolderExists(item.Path) Then
dustFolderPath = objFSO.GetSpecialFolder(2).Path & "_TempDeleteFolder"
objFSO.MoveFolder item.Path, dustFolderPath
delCommand = "cmd.exe /C rmdir /S /Q " & """" & dustFolderPath & """"
WshShell.Run delCommand, 0, true
End If
End If
Next

Set objFSO = Nothing
Set objShell = Nothing
Set WshShell = Nothing
Set trash = Nothing

PowerShellから新しいウィンドウのPowerShellを開く

| 2009年6月16日火曜日
PowerShellから新しいウィンドウのPowerShellを開くには、WScript.Shellを使う。

> $WShell = New-Object -comObject WScript.Shell
> $posh = "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"
> [void]$WShell.Run($posh , 1)

これを「New-PowerShellWindow.ps1」とかにしてパスの通ったところに置いておけば、キーボードだけでやりたい人には使えるかもしれない。