2010年9月15日水曜日

苺perl

会社のWindowsPCはリモート監視されてるので勝手にソフトインストール出来ない。
それでPerlでインストーラ無し版を探していたらポータブル版を見つけた。
↓の下の方。
http://strawberryperl.com/

ストロベリーパール...変な名前だけど使えるからよしとしよう。

2010年9月1日水曜日

FreeMat

FreeMatしばらく使ってなかったら、知らない間に4.0になってた。

2010年5月3日月曜日

フォルダ以下のファイルを

【種類】
javascriptでWSH(Windows)

【機能】
指定フォルダ以下のファイルに対して何らかの処理を行います。
(本スクリプトでは処理部は実装していません。)
ドラッグ&ドロップで渡されたパスをルートパスとして実行します。
ファイル検索パターンで拡張子などを指定できます。(正規表現)


var fs = new ActiveXObject("Scripting.FileSystemObject");
var files = new Array();
var searchext = /\.bmp$/i; // ファイル検索パターン (例ではbmpファイル)

// D&Dの引数をルートパスにする
strRootPath = WScript.Arguments(0)

// 指定フォルダ以下の全ショートカットリストを取得
GetAllSubFiles(strRootPath, files, searchext);

for (i in files) {
  //ここに処理を実装する。files[i]でファイル名を取り出す。

}

//****************************************************************
// 指定パス以下の指定された正規表現にマッチしたパスのリストを取得
//****************************************************************
function GetAllSubFiles(path, fileList, reg) {
 // フォルダオブジェクト取得
 var f = fs.GetFolder(path)
 // すべてのファイルを抽出
 var fc = new Enumerator(f.Files);
 for(; !fc.atEnd(); fc.moveNext()) {
  strPath = fc.item().Path
  // 正規表現にマッチしたものだけリストに追加
  if (strPath.match(reg)) {
   fileList.push(strPath);
   //WScript.echo(strPath);
  }
 }
 //すべてのサブフォルダ
 var subfc = new Enumerator(f.SubFolders);
 for(; !subfc.atEnd(); subfc.moveNext()) {
  GetAllSubFiles(subfc.item().Path, fileList, reg); // 再帰
 }
}

2010年3月17日水曜日

親フォルダを開く

【種類】
javascriptでWSH(Windows)

【機能】
引数で渡されたショートカットの親フォルダを開きます。
実体を渡された場合はその親フォルダを開きます。(TaggedFrogなんかで使える)

【準備】
ファイル名を"親フォルダを開く.js"などにして保存。

【使い方】
ショートカットやファイルをスクリプトファイルにD&D。
またはSendToフォルダに入れておくと便利です。


objArgs = WScript.Arguments;
fso = new ActiveXObject("Scripting.FileSystemObject")
shell = new ActiveXObject("Shell.Application")
WshShell = WScript.CreateObject("WScript.Shell");

if (objArgs.length > 0)
{ // 引数がある場合
  // 第1引数を対象ファイル名とする(第2以降は無視)
  strFileName = objArgs(0)
  // 拡張子を取得 
  strExName = fso.GetExtensionName(strFileName)
 
  if (strExName.toUpperCase() == "LNK")
  { // ショートカットの場合はリンク先ファイルの親フォルダを開く
    strTargetPath = WshShell.CreateShortcut(strFileName).TargetPath
    strParentFolder = fso.GetParentFolderName(strTargetPath)
  } else {
    // それ以外の場合はそのファイルの親フォルダを開く
    strParentFolder = fso.GetParentFolderName(strFileName)
  }
  shell.open(strParentFolder)
} else { // 引数がない場合
  WScript.echo("引数がありません.")
}

2010年3月13日土曜日

自動クリック

【種類】
AutoIt(Ver.3)スクリプト

【機能】
指定したウインドウが表示されたら、特定のボタンを自動的にクリックします。

【準備】
AutoItでexe化します。

【使い方】
起動すると常駐して監視します。
指定のウインドウが表示されたら指定のボタンが自動的にクリックされます。
終了する場合はタスクトレイのアイコン右クリックして「Exit」を選んで下さい。

【設定】
iniファイルを直接編集して設定します。

1.[configuration]セクション

interval_sec=1 ... 監視間隔を秒で指定

2.[window0] ~ [window9]

ウィンドウの指定

title ... 監視するウインドウタイトルの一部を指定します。(部分マッチング)
未指定の場合はそのセクションが無視されます。

text ... 監視するウインドウに表示されている内容の一部を指定します。(部分マッチング)
未指定でも動作します。(タイトル

control ... クリックするボタン(コントロール)を指定します。
未指定の場合はウインドウにクローズメッセージを投げます。

3.controlの指定方法

例) [TEXT:OK] ... OKというテキストが記入されているコントロールをクリックします。
他にID,Classなどでも指定できますが、詳しくはAutoitのヘルプファイルのControlsを参照して下さい。



AutoClick.au3

; initialize
AutoItSetOption("TrayAutoPause", 0)
Dim $title[10], $atext[10],$control[10]

; ini file
$inifilename=@ScriptDir&"\AutoClick.ini"

; Interval String
$value = IniRead($inifilename, "configuration", "interval_sec", "1")
If @error Then
MsgBox(4096, "", "Error occurred, probably no INI file.")
exit
EndIf
$interval_sec = number($value)

; Window Settings
$sectionNames = IniReadSectionNames($inifilename)
If @error Then
MsgBox(4096, "", "Error occurred, probably no INI file.")
exit
EndIf

For $i = 0 To 9
$title[$i] = IniRead($inifilename, "window"&$i, "title", "")
$atext[$i] = IniRead($inifilename, "window"&$i, "text", "")
$control[$i] = IniRead($inifilename, "window"&$i, "control", "")
;MsgBox(4096, "", $title[$i] & " : " & $atext[$i])
Next

; main roop
while (1)
For $i = 0 to 9
if $title[$i] <> "" And WinExists($title[$i], $atext[$i]) Then
if $control[$i] <> "" Then
ControlClick($title[$i], $atext[$i], $control[$i])
Else
winClose($title[$i], $atext[$i])
EndIf
EndIf
Next
Sleep($interval_sec*1000)
WEnd



AutoClick.ini(例)


[configuration]
interval_sec=1

[window0]
title=hogehoge
text=Please Press OK Button
control=[TEXT:OK]