multitarget-ping.bat
「作ってくれ」と言われて作ったところ、GUIで操作できるフリーソフトを見つけたから必要なくなったと言われてしまった。
眠らせておくのももったいないので公開します。
概要
指定した範囲に存在しないIPのリストを出力するバッチファイル。
/24~/32までの範囲のアドレスにpingを順次飛ばし、各IPアドレスの応答を列挙します。
また、pingの応答結果をカレントディレクトリの"result.log"に出力します。
書式
multitarget-ping.bat NETWORK SCOPE_START SCOPE_END
- NETWORK: 指定するIPv4アドレスの範囲の第3オクテットまでを指定する。最後にドットを付ける必要がある
- SCOPE_START: 範囲の最小値となるIPv4アドレスの第4オクテットを指定する
- SCOPE_END: 範囲の最大値となるIPv4アドレスの第4オクテットを指定する
動作環境
Windows XP Professional SP3にて作成・動作確認しています。
使用例
C:\>multitarget-ping.bat 192.168.1. 1 255 192.168.1.1: Reply 192.168.1.2: Reply 192.168.1.3: Unreachable 192.168.1.4: Unreachable 192.168.1.5: Unreachable 192.168.1.6: Unreachable (中略) 192.168.1.254: Unreachable 192.168.1.255: Unreachable
ライセンス
WYFPL - Do What The Fuck You Want To Public Licenseの元公開します。
つまり、
コピーだろうが配布だろうが改変だろうが、もう好きにしてくれ。ライセンスが気に入らなきゃ別のライセンスに変えてくれ。
それほど間違っていないプログラマ用語辞典
ということです。
プログラム
@echo off set network=%1% set scopeStart=%2% set scopeEnd=%3% set /a i=%scopeStart% :LOOP set targetIP=%network%%i% ping -w 1 -n 1 %targetIP% >> result.log if not errorlevel 1 goto success if errorlevel 1 goto error :success echo %targetIP%: Reply goto next :error echo %targetIP%: Unreachable goto next :next if "%i%"=="%scopeEnd%" goto exit set /a i=i+1 goto LOOP :exit
参考
[Calc] 図形のサイズを変える
概要
com.sun.star.drawing.GraphicShapeObjectの大きさを変える。
環境
OpenOffice.org Calc 3.0.0
コード
目的
別記事「[Calc] ファイル選択ダイアログを開き、選択された画像を挿入する」にて挿入した画像を、アスペクト比を保ちながらサイズの変更を行う。
上記の別記事中のマクロに続いて処理を実行させる場合、挿入された画像のDrawPageオブジェクトのインデックスは、対象シート中のDrawPageオブジェクトの中で最大となる。このため、処理対象画像の選択はインデックスにて判定(最大のインデックス値を持つ画像を対象)を行っている。
const MAX_WIDTH as Integer = 10000 ' 10cm const MAX_HEIGHT as Integer = 10000 sub resizePicture dim sheet as Object dim drawPg as Object dim draw as Object sheet = ThisComponent.CurrentController.ActiveSheet drawPg = sheet.getDrawPage if drawPg.getCount > 0 then 'インデックスが最大のオブジェクトを対象とする draw = drawPg.getByIndex( drawPg.getCount - 1 ) else exit sub end if dim scale as double dim drawResize as new com.sun.star.awt.Size '拡大率を求める if draw.Size.Width > draw.Size.Height then '横長の場合 scale = MAX_WIDTH / draw.Size.Width else '縦長の場合 scale = MAX_HEIGHT / draw.Size.Height end if with drawResize .Width = draw.Size.Width * scale .Height = draw.Size.Height * scale end with draw.setSize(drawResize) end sub
ところで
数値変数の型の最大値と最小値はどこかに定数として用意されているのでしょうか?
[Calc] ファイル選択ダイアログを開き、選択された画像を挿入する
概要
メニュー「挿入 - 画像 - ファイルから」に相当するマクロ
環境
OpenOffice.org Calc 3.0.0
コード
sub insertPicture dim document as Object dim dispather as Object ' get access to the document document = ThisComponent.CurrentController.Frame dispatcher = createUnoService("com.sun.star.frame.DispatchHelper") ' ファイル選択ダイアログの初期化 dim filePickerDlg as Object filePickerDlg = createUnoService("com.sun.star.ui.dialogs.FilePicker") filePickerDlg.appendFilter( _ "JPEG画像ファイル(*.jpg, *.jpeg)", "*.jpg", "*.jpeg") if filePickerDlg.execute = 1 then 'ファイルが指定された場合 dim selFiles() as String selFiles() = filePickerDlg.getFiles() dim picInfo(2) as new com.sun.star.beans.PropertyValue picInfo(0).Name = "FileName" picInfo(0).Value = selFiles(0) picInfo(1).Name = "FilterName" picInfo(1).Value = "JPEG - Joint Photograhpic Experts Group" picInfo(2).Name = "AsLink" picInfo(2).Value = false 'ダイアログで指定された画像をアクティブセルへ挿入 dispatcher.executeDispatch(document, ".uno:InsertGraphic", _ "", 0, picInfo()) end if end sub
OpenOffice.org Basic
OpenOffice.org Basicにてプログラムを作成した時のメモ。
環境は各記事を参照。