SQLの窓 イラストAC フリー素材

2014年04月27日

言語別文字列 Split

内容的にはたいしたものではありませんが、run code 使って実際に実行できるので、結構悪く無いドキュメントになるかもしれません。一つの言語だと、記事にする事自体無理なんですが、このノリは結構将来性あるものだと感じます。

PHP

run code
<?php
//Title of this code

    $a = explode(" ", "Hello world!" );
    foreach( $a as $value ) {
        print "{$value}\n";
    }
    
?>

Java

run code
//Title of this code
//'main' method must be in a class 'Rextester'.

import java.util.*;
import java.lang.*;

class Rextester
{  
    public static void main(String args[])
    {
        
        String[] a = "Hello world!".split( " " );

        for(String value : a){
              System.out.println(value);
        }                       
    }
}

JavaScript

run code
//Title of this code

var a = "Hello world!".split(" ");

a.forEach(
    function(value) {
        print(value);
    }
);


C#

run code
//Title of this code
//Rextester.Program.Main is the entry point for your code. Don't change it.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;

namespace Rextester
{
    public class Program
    {
        public static void Main(string[] args)
        {
            
            Char[] delimiter = " ".ToCharArray();
            String[] a = "Hello world!".Split( delimiter );

            foreach(String value in a){
                  Console.WriteLine(value);
            }               
        }
    }
}



タグ:C# javascript java PHP
posted by at 2014-04-27 03:08 | プログラマ用 | このブログの読者になる | 更新情報をチェックする

2014年04月17日

VBScript : 拡張子との関連付けでアプリケーションを起動する

コマンドプロンプト内のコマンドの start コマンドを使用して、カレントディレクトリにあるファイルを実行します。但し、コマンドプロンプトが開かないように、WshShell.Run に第二引数を 0、第三引数を同期実行として true に設定しています。
Set WshShell = CreateObject( "WScript.Shell" )
Call WshShell.Run( "cmd.exe /c start " & "ProcessList.htm",0, true )

rundll32.exe shell32.dll,ShellExec_RunDLL を使用して拡張子と関連付けられたアプリケーションを使用します。但し、対象となるファイルが絶対パスである必要があるので、コマンドプロンプトの特性を利用してカレントディレクトリのパスを付加しています。
Set WshShell = CreateObject( "WScript.Shell" )
Call WshShell.Run( "cmd.exe /c rundll32.exe shell32.dll,ShellExec_RunDLL ""%CD%\ProcessList.htm""",0, true )

rundll32.exe shell32.dll,ShellExec_RunDLL を使用しています。一つ前と同じですが、絶対パスの付加方法として、FOR コマンドを利用しています。
Set WshShell = CreateObject( "WScript.Shell" )
Call WshShell.Run( "cmd.exe /c FOR /F %i IN ('ProcessList.htm') DO rundll32.exe shell32.dll,ShellExec_RunDLL ""%~fi""",0, true )

rundll32.exe shell32.dll,ShellExec_RunDLL を使用していますが、絶対パスを付加する為の情報を、VBScript 内で取得するので、実行時にコマンドプロンプトを使用していないので、WshShell.Run の引数はコマンドのみです。
Set WshShell = CreateObject( "WScript.Shell" )
Call WshShell.Run( "rundll32.exe shell32.dll,ShellExec_RunDLL " & """" & WshShell.CurrentDirectory & "\ProcessList.htm""" )





posted by at 2014-04-17 23:38 | VBScript | このブログの読者になる | 更新情報をチェックする

実行されたプログラムがどこにあって、どのように実行されているか

早い話、タスクマネージャに表示されている、より詳しい情報を取得です。パスが通ってるファイルを実行した時の実際の場所を知りたい時や、なんか、気になる(ウイルス?)プログラムの起動場所を知りたい時に使います


Set Fs = CreateObject( "Scripting.FileSystemObject" )
Set WshShell = CreateObject( "WScript.Shell" )
Set OutFile = Fs.OpenTextFile( "ProcessList.htm", 2, True )

strComputer = "." 
Set objWMIService = GetObject("winmgmts:" _ 
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") 
Set col = objWMIService.ExecQuery _ 
    ("Select * from Win32_Process") 
result = ""
OutFile.WriteLine "<html><head><title>ProcessList</title>"
OutFile.WriteLine "<meta http-equiv=""Content-Type"" content=""text/html; charset=shift_jis"">"
OutFile.WriteLine "<style type=""text/css"">* { font-size:12px;}"

str=""
str=str&"table { "&vbCrLf
str=str&"	border-collapse: collapse; "&vbCrLf
str=str&"	border-style: solid; "&vbCrLf
str=str&"	border-color: #000000; "&vbCrLf
str=str&"	border-width: 1px; "&vbCrLf
str=str&"	background-color: #FFFFFF; "&vbCrLf
str=str&"} "&vbCrLf
str=str&"td { "&vbCrLf
str=str&"	padding: 5px; "&vbCrLf
str=str&"	border-style: solid; "&vbCrLf
str=str&"	border-color: #000000; "&vbCrLf
str=str&"	border-width: 1px; "&vbCrLf
str=str&"} "&vbCrLf
str=str&"th { "&vbCrLf
str=str&"	padding: 5px; "&vbCrLf
str=str&"	border-style: solid; "&vbCrLf
str=str&"	border-color: #000000; "&vbCrLf
str=str&"	border-width: 1px; "&vbCrLf
str=str&"	background-color: silver; "&vbCrLf
str=str&"} "&vbCrLf
OutFile.WriteLine str

OutFile.WriteLine "</style>"
OutFile.WriteLine "</head><body>"
OutFile.WriteLine "<table>"
OutFile.WriteLine "<tr>"
OutFile.WriteLine "<th>名称</th>"
OutFile.WriteLine "<th>パス</th>"
OutFile.WriteLine "<th>コマンドライン</th>"
OutFile.WriteLine "</tr>"
nCnt = 0
For Each obj in col 
	OutFile.WriteLine "<tr>"
	strCss = ""
	if nCnt Mod 2 = 0 then
		strCss = "style='background-color:#D0D0D0;'"
	end if
	OutFile.WriteLine "<td nowrap " & strCss & "><B>" & obj.Caption & "</b></td>"
	OutFile.WriteLine "<td nowrap " & strCss & ">" & obj.ExecutablePath & "</td>"
	on error resume next
	OutFile.WriteLine "<td nowrap " & strCss & ">" & obj.CommandLine & "</td>"
	on error goto 0
	OutFile.WriteLine "</tr>"
	nCnt = nCnt + 1
Next 
OutFile.WriteLine "</table></body></html>"
OutFile.Close

Call WshShell.Run( "cmd.exe /c start " & "ProcessList.htm",0, true )

このソース内部の CSS 部分の出力文字列の作成は、テキスト変換サービスの VBS で可能です。





タグ:WMI VBScript
posted by at 2014-04-17 05:42 | VBScript | このブログの読者になる | 更新情報をチェックする

指定した位置でレジストリエディタを開く為のスクリプトをダウンロードします

 
レジストリの目的のパスを開くのは、慣れていても時間がかかります。VBScript の先頭のパス部分変えるだけで利用可能です。
 

以下のような VBScript としてダウンロードされます
strParam = "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit\Favorites"

' レジストリ書き込み用
Set WshShell = CreateObject( "WScript.Shell" )
' WMI用
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")

' レジストリエディタが最後に開いていたキーの登録を行います
strPath = "Software\Microsoft\Windows\CurrentVersion\Applets\Regedit\LastKey"
if GetOSVersion() >= 6 then
	strRegPath = "コンピュータ\" & strParam
else
	strRegPath = "マイ コンピュータ\" & strParam
end if

' 既に regedit が実行中の場合はいったん終了させます
Set colProcessList = objWMIService.ExecQuery _ 
	("Select * from Win32_Process Where Name = 'regedit.exe'") 
For Each objProcess in colProcessList
	' 最後のウインドウの位置とサイズを保存する為の終わらせ方
	WshShell.AppActivate("レジストリ エディタ")
	Wscript.Sleep(500)
	WshShell.SendKeys ("%{F4}")
	Wscript.Sleep(500)
	' 上記終わらせ方が失敗した時の強制終了
	on error resume next
	objProcess.Terminate() 
	on error goto 0
Next 

WshShell.RegWrite "HKCU\" & strPath, strRegPath, "REG_SZ"

' レジストリエディタを起動します
Call WshShell.Run( "regedit.exe" )
' レジストリエディタが終わるまで待つ場合は以下のようにします
' Call WshShell.Run( "regedit.exe", , True )

REM **********************************************************
REM OS バージョンの取得
REM **********************************************************
Function GetOSVersion()

	Dim colTarget,str,aData,I,nTarget

	Set colTarget = objWMIService.ExecQuery( _
		 "select Version from Win32_OperatingSystem" _
	)
	For Each objRow in colTarget
		str = objRow.Version
	Next

	aData = Split( str, "." )
	For I = 0 to Ubound( aData )
		if I > 1 then
			Exit For
		end if
		if I > 0 then
			nTarget = nTarget & "."
		end if
		nTarget = nTarget & aData(I)
	Next

	GetOSVersion = CDbl( nTarget )

End Function

 


posted by at 2014-04-17 04:53 | VBScript | このブログの読者になる | 更新情報をチェックする

Windows8 で動作確認した『コンピュータ』アイコンに登録するメニュー

メニュー項目を増やして、インストール用の .reg アンインストール用の .reg 等を追加してパッケージにしました。




以下のコードを .reg 内に書き込んで、Unicode で保存して実行してインポートします
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\001]
@="   サービス"

[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\001\command]
@=hex(2):6d,00,6d,00,63,00,2e,00,65,00,78,00,65,00,20,00,22,00,25,00,53,00,79,\
  00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,00,5c,00,73,00,79,00,\
  73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,73,00,65,00,72,00,76,00,69,00,63,\
  00,65,00,73,00,2e,00,6d,00,73,00,63,00,22,00,20,00,2f,00,73,00,00,00

[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\002]
@="   システム情報"

[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\002\command]
@=hex(2):22,00,25,00,50,00,72,00,6f,00,67,00,72,00,61,00,6d,00,46,00,69,00,6c,\
  00,65,00,73,00,25,00,5c,00,43,00,6f,00,6d,00,6d,00,6f,00,6e,00,20,00,46,00,\
  69,00,6c,00,65,00,73,00,5c,00,4d,00,69,00,63,00,72,00,6f,00,73,00,6f,00,66,\
  00,74,00,20,00,53,00,68,00,61,00,72,00,65,00,64,00,5c,00,4d,00,53,00,49,00,\
  6e,00,66,00,6f,00,5c,00,6d,00,73,00,69,00,6e,00,66,00,6f,00,33,00,32,00,2e,\
  00,65,00,78,00,65,00,22,00,00,00

[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\003]
@="   アプリーケーションの追加と削除"

[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\003\command]
@="RunDLL32.EXE shell32.dll,Control_RunDLL appwiz.cpl"

[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\004]
@="   ODBC アドミニストレータ"

[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\004\command]
@="RunDLL32.EXE shell32.dll,Control_RunDLL odbccp32.cpl"

[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\005]
@="   レジストリエディタ"

[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\005\command]
@="regedit.exe"

[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\006]
@="   コマンドプロンプト"

[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\006\command]
@=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,\
  00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,63,00,6d,00,\
  64,00,2e,00,65,00,78,00,65,00,00,00

[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\007]
@="   UAC"

[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\007\command]
@=hex(2):55,00,73,00,65,00,72,00,41,00,63,00,63,00,6f,00,75,00,6e,00,74,00,43,\
  00,6f,00,6e,00,74,00,72,00,6f,00,6c,00,53,00,65,00,74,00,74,00,69,00,6e,00,\
  67,00,73,00,2e,00,65,00,78,00,65,00,00,00

[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\008]
@="   イベント ビューアー"

[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\008\command]
@=hex(2):6d,00,6d,00,63,00,2e,00,65,00,78,00,65,00,20,00,22,00,25,00,77,00,69,\
  00,6e,00,64,00,69,00,72,00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,\
  33,00,32,00,5c,00,65,00,76,00,65,00,6e,00,74,00,76,00,77,00,72,00,2e,00,6d,\
  00,73,00,63,00,22,00,20,00,2f,00,73,00,00,00

[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\009]
@="   ユーザーアカウント"

[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\009\command]
@="rundll32.exe netplwiz.dll,UsersRunDll"

[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\010]
@="   環境変数"

[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\010\command]
@="rundll32.exe sysdm.cpl,EditEnvironmentVariables"

[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\011]
@="   HOSTS"

[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\011\command]
@=hex(2):6e,00,6f,00,74,00,65,00,70,00,61,00,64,00,2e,00,65,00,78,00,65,00,20,\
  00,22,00,25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,\
  25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,64,00,72,\
  00,69,00,76,00,65,00,72,00,73,00,5c,00,65,00,74,00,63,00,5c,00,68,00,6f,00,\
  73,00,74,00,73,00,22,00,00,00

[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\012]
@="   タスクマネージャ"

[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\012\command]
@="taskmgr.exe"

[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\013]
@="   タスク スケジューラ"

[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\013\command]
@=hex(2):6d,00,6d,00,63,00,2e,00,65,00,78,00,65,00,20,00,22,00,25,00,77,00,69,\
  00,6e,00,64,00,69,00,72,00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,\
  33,00,32,00,5c,00,74,00,61,00,73,00,6b,00,73,00,63,00,68,00,64,00,2e,00,6d,\
  00,73,00,63,00,22,00,20,00,2f,00,73,00,00,00

[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\014]
@="   ローカル グループ ポリシーエディタ"

[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\014\command]
@=hex(2):6d,00,6d,00,63,00,2e,00,65,00,78,00,65,00,20,00,22,00,25,00,53,00,79,\
  00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,00,5c,00,73,00,79,00,\
  73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,67,00,70,00,65,00,64,00,69,00,74,\
  00,2e,00,6d,00,73,00,63,00,22,00,00,00

アンインストールは、以下の .reg ファイルをエクスプローラからダブルクリックするだけです

Windows Registry Editor Version 5.00

[-HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\001]
[-HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\002]
[-HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\003]
[-HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\004]
[-HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\005]
[-HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\006]
[-HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\007]
[-HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\008]
[-HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\009]
[-HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\010]
[-HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\011]
[-HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\012]
[-HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\013]
[-HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\014]


以上は全て、パッケージに同梱されています。
( インストールされた場所をレジストリエディタで開く『バッチファイル+VBScript』もあります



タイトルは、レジストリエディタで変更できますし、追加も簡単です。



posted by at 2014-04-17 03:58 | Windows | このブログの読者になる | 更新情報をチェックする

2014年04月10日

PHP : GD で Windows のビットマップを扱う


PHP : GD で Windows のビットマップを扱う


以前、GD => BMP の片方向を見つけて、手書きブログ用のオンラインハートエディタで利用したのですが、そのハートエディタの中身を再利用できるように整理する為に調べていると、BMP から GD への変換が前回見つけた PHP のオンラインマニュアルの投稿部分の違うページにある事が解りました。


以前は、関数一覧のページだったのですが、今回は imagecreate 関数のページでした。双方向ですし、サンプルソースも長くなるので上記リンクから参照できるようにしています。

一応、動く簡単なサンプルコードにはなっていますが、オリジナルと全く変わっていません
( 一部コメントが化けてたので日本語にしましたけれど )

処理の特徴としては、unpackpack 関数を使用してバイナリデータを本来の構造どおりに整備して処理しているところです。

フォーマットに使われている文字列は、1文字目が形式で、2文字目以降は『名前(任意)』です。
コード説明
aNUL で埋めた文字列
A空白で埋めた文字列
h十六進文字列、下位ニブルが先
H十六進文字列、上位ニブルが先
csigned char
Cunsigned char
ssigned short (常に 16 ビット、マシンのバイトオーダー)
Sunsigned short (常に 16 ビット、マシンのバイトオーダー)
nunsigned short (常に 16 ビット、ビッグエンディアンバイトオーダー)
vunsigned short (常に 16 ビット、リトルエンディアンバイトオーダー)
isigned integer (サイズおよびバイトオーダーはマシン依存)
Iunsigned integer (サイズおよびバイトオーダーはマシン依存)
lsigned long (常に 32 ビット、マシンのバイトオーダー)
Lunsigned long (常に 32 ビット、マシンのバイトオーダー)
Nunsigned long (常に 32 ビット、ビッグエンディアンバイトオーダー)
Vunsigned long (常に 32 ビット、リトルエンディアンバイトオーダー)
ffloat (サイズおよび表現はマシン依存)
ddouble (サイズおよび表現はマシン依存)
xNUL バイト
X1 バイト戻る
ZNUL 埋め文字列 (PHP 5.5 以降)
@絶対位置まで NUL で埋める
オリジナルコードへのリンク

to create an image from a BMP file

If you happen to need a way to output a Windows BMP file



タグ:gd PHP
posted by at 2014-04-10 03:05 | PHP | このブログの読者になる | 更新情報をチェックする

2014年04月07日

いろいろな言語におけるバーセントエンコーディング

  • 【1】 PHP : urlencode
  • 【2】 PHP : rawurlencode : 5.2.x
  • 【3】 PHP : rawurlencode : 5.3.x (rfc3986)
  • 【4】 JavaScript : encodeURI
  • 【5】 JavaScript : encodeURIComponent
  • 【6】 ASP : Server.URLEncode ( Server.URLEncode(chr(I))で変換できない文字があります )
  • 【7】 PowerShell : [System.Web.HttpUtility]::UrlEncode
  • 【8】 python 2.6.2
1〜8 はかなり前に調べたものですが、以下は今回調べました。 結果さえ解っておれば、一括で置き換えるのが簡単です( rfc3986 対応 )
  • 【9】 fw4 : VS2010 Uri.EscapeDataString
  • 【10】 fw4.5 : VS2012 Uri.EscapeDataString (rfc3986)
  • 【11】 fw : VS2010 HttpUtility.UrlEncode( VS2012 も同じ )
ちなみに、Framework4.5 で、WebUtility.UrlEncode があるようで、11) と同じでした。
    php1 php2 php3 js1 js2 asp ps py fw4 fw4.5 fw
    1 2 3 4 5 6 7 8 9 10 11
0   %00 %00 %00 %00 %00   %00 %00 %00 %00 %00
32   + %20 %20 %20 %20 + + %20 %20 %20 +
33 【!】 %21 %21 %21 ! ! %21 ! %21 ! %21 !
34 【"】 %22 %22 %22 %22 %22 %22 %22 %22 %22 %22 %22
35 【#】 %23 %23 %23 # %23 %23 %23 %23 %23 %23 %23
36 【$】 %24 %24 %24 $ %24 %24 %24 %24 %24 %24 %24
37 【%】 %25 %25 %25 %25 %25 %25 %25 %25 %25 %25 %25
38 【&】 %26 %26 %26 & %26 %26 %26 %26 %26 %26 %26
39 【'】 %27 %27 %27 ' ' %27 ' %27 ' %27 %27
40 【(】 %28 %28 %28 ( ( %28 ( %28 ( %28 (
41 【)】 %29 %29 %29 ) ) %29 ) %29 ) %29 )
42 【*】 %2A %2A %2A * * %2A * %2A * %2A *
43 【+】 %2B %2B %2B + %2B %2B %2B %2B %2B %2B %2B
44 【,】 %2C %2C %2C , %2C %2C %2C %2C %2C %2C %2C
45 【-】 - - - - - %2D - - - - -
46 【.】 . . . . . %2E . . . . .
47 【/】 %2F %2F %2F / %2F %2F %2F / %2F %2F %2F
ここは、0から9の数字で変換されません
58 【:】 %3A %3A %3A : %3A %3A %3A %3A %3A %3A %3A
59 【;】 %3B %3B %3B ; %3B %3B %3B %3B %3B %3B %3B
60 【<】 %3C %3C %3C %3C %3C %3C %3C %3C %3C %3C %3C
61 【=】 %3D %3D %3D = %3D %3D %3D %3D %3D %3D %3D
62 【>】 %3E %3E %3E %3E %3E %3E %3E %3E %3E %3E %3E
63 【?】 %3F %3F %3F ? %3F %3F %3F %3F %3F %3F %3F
64 【@】 %40 %40 %40 @ %40 %40 %40 %40 %40 %40 %40
ここは、AからZのアルファベットで変換されません
91 【[】 %5B %5B %5B %5B %5B %5B %5B %5B %5B %5B %5B
92 【\】 %5C %5C %5C %5C %5C %5C %5C %5C %5C %5C %5C
93 【]】 %5D %5D %5D %5D %5D %5D %5D %5D %5D %5D %5D
94 【^】 %5E %5E %5E %5E %5E %5E %5E %5E %5E %5E %5E
95 【_】 _ _ _ _ _ %5F _ _ _ _ _
96 【`】 %60 %60 %60 %60 %60 %60 %60 %60 %60 %60 %60
ここは、aからzのアルファベット(小文字)で変換されません
123 【{】 %7B %7B %7B %7B %7B %7B %7B %7B %7B %7B %7B
124 【|】 %7C %7C %7C %7C %7C %7C %7C %7C %7C %7C %7C
125 【}】 %7D %7D %7D %7D %7D %7D %7D %7D %7D %7D %7D
126 【~】 %7E %7E ~ ~ ~ %7E %7E %7E ~ ~ %7E
127   %7F %7F %7F %7F %7F %7F %7F %7F %7F %7F %7F


posted by at 2014-04-07 13:46 | インターネット | このブログの読者になる | 更新情報をチェックする

2014年04月04日

VBScript : 3種のMDB(または accdb)内の テーブル一覧取得方法

ADO を使うのが通常ですが、ADOX または、Access を直接使用してもかまいません。
※ このテストは、Microsoft Office 2010 がインストールされている環境で実行しています。
' ▼ コマンドプロンプトを開いて、終了したら PAUSE する。
Crun()

' ************************************************
' 基本設定
' ************************************************
' このスクリプトが存在するディレクトリを取得
strCurDir = WScript.ScriptFullName
strCurDir = Replace( strCurDir, WScript.ScriptName, "" )

' ************************************************
' OpenSchema
' ************************************************
Set Mdb = Wscript.CreateObject("ADODB.Connection")
strConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & strCurDir & "\販売管理B.mdb" & ";"
Mdb.Open strConnection
Set Schema = Mdb.OpenSchema( 20 ,Array(Empty,Empty,Empty,Empty) )

Wscript.Echo "販売管理B.mdb のテーブル一覧を OpenSchema で取得します" & vbCrLf
Do while not Schema.EOF

	Wscript.Echo Schema.Fields( "TABLE_NAME" ).Value
	Schema.MoveNext
Loop
Mdb.Close()

Wscript.Echo vbCrLf

' ************************************************
' ADOX.Catalog
' ************************************************
Set Adox = Wscript.CreateObject("ADOX.Catalog")
Adox.ActiveConnection = strConnection

Wscript.Echo "販売管理B.mdb のテーブル一覧を ADOX.Catalog で取得します" & vbCrLf
For Each Table in  Adox.Tables

	Wscript.Echo Table.Name

Next

Wscript.Echo vbCrLf


' ************************************************
' Access.Application
' ************************************************
Set Access = Wscript.CreateObject("Access.Application")
Access.OpenCurrentDatabase( strCurDir & "\販売管理B.mdb" )

Wscript.Echo "販売管理B.mdb のテーブル一覧を Access.Application で取得します" & vbCrLf
For Each Table in  Access.CurrentDb.TableDefs

	Wscript.Echo Table.Name

Next

For Each View in  Access.CurrentDb.QueryDefs

	Wscript.Echo View.Name

Next

Wscript.Echo vbCrLf

' ************************************************
' OpenSchema
' ************************************************
Set Mdb = Wscript.CreateObject("ADODB.Connection")
strConnection = "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=" & strCurDir & "\販売管理B.accdb" & ";"
Mdb.Open strConnection
Set Schema = Mdb.OpenSchema( 20 ,Array(Empty,Empty,Empty,Empty) )

Wscript.Echo "販売管理B.accdb のテーブル一覧を OpenSchema(2007以降) で取得します" & vbCrLf
Do while not Schema.EOF

	Wscript.Echo Schema.Fields( "TABLE_NAME" ).Value
	Schema.MoveNext
Loop
Mdb.Close()

Wscript.Echo vbCrLf

' ************************************************
' ADOX.Catalog
' ************************************************
Set Adox = Wscript.CreateObject("ADOX.Catalog")
Adox.ActiveConnection = strConnection

Wscript.Echo "販売管理B.accdb のテーブル一覧を ADOX.Catalog(2007以降) で取得します" & vbCrLf
For Each Table in  Adox.Tables

	Wscript.Echo Table.Name

Next

Wscript.Echo vbCrLf


' ************************************************
' Access.Application
' ************************************************
Set Access = Wscript.CreateObject("Access.Application")
Access.OpenCurrentDatabase( strCurDir & "\販売管理B.accdb" )

Wscript.Echo "販売管理B.accdb のテーブル一覧を Access.Application で取得します" & vbCrLf
For Each Table in  Access.CurrentDb.TableDefs

	Wscript.Echo Table.Name

Next

For Each View in  Access.CurrentDb.QueryDefs

	Wscript.Echo View.Name

Next

Wscript.Echo vbCrLf


Wscript.Echo("【"&WScript.ScriptName&"】の処理が終了しました" & vbCrLf & vbCrLf )

' **********************************************************
' Cscript.exe で実行を強制
' ウィンドウをアクティブにし、最大化ウィンドウとして表示(3)
' Cscript.exe の実行終了後 pause で一時停止
' **********************************************************
Function Crun( )

	Dim str,WshShell

	str = WScript.FullName
	str = Right( str, 11 )
	str = Ucase( str )
	if str <> "CSCRIPT.EXE" then
		str = WScript.ScriptFullName

		Set WshShell = CreateObject( "WScript.Shell" )

		strParam = " "
		For I = 0 to Wscript.Arguments.Count - 1
			if instr(Wscript.Arguments(I), " ") < 1 then
				strParam = strParam & Wscript.Arguments(I) & " "
			else
				strParam = strParam & Dd(Wscript.Arguments(I)) & " "
			end if
		Next
		Call WshShell.Run( "cmd.exe /c cscript.exe " & Dd(str) & strParam & " & pause", 3 )
		WScript.Quit
	end if

End Function
' **********************************************************
' 文字列を " で囲む関数
' **********************************************************
Function Dd( strValue )

	Dd = """" & strValue & """"

End function


処理結果
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.

販売管理B.mdb のテーブル一覧を OpenSchema で取得します

MSysAccessStorage
MSysACEs
MSysNavPaneGroupCategories
MSysNavPaneGroups
MSysNavPaneGroupToObjects
MSysNavPaneObjectIDs
MSysObjects
MSysQueries
MSysRelationships
V_商品一覧
V_売上日付
V_得意先台帳
V_社員一覧
コード名称マスタ
コントロールマスタ
メッセージマスタ
取引データ
商品マスタ
商品分類マスタ
得意先マスタ
社員マスタ
郵便番号マスタ


販売管理B.mdb のテーブル一覧を ADOX.Catalog で取得します

MSysAccessStorage
MSysACEs
MSysNavPaneGroupCategories
MSysNavPaneGroups
MSysNavPaneGroupToObjects
MSysNavPaneObjectIDs
MSysObjects
MSysQueries
MSysRelationships
V_商品一覧
V_売上日付
V_得意先台帳
V_社員一覧
コード名称マスタ
コントロールマスタ
メッセージマスタ
取引データ
商品マスタ
商品分類マスタ
得意先マスタ
社員マスタ
郵便番号マスタ


販売管理B.mdb のテーブル一覧を Access.Application で取得します

MSysAccessStorage
MSysACEs
MSysNavPaneGroupCategories
MSysNavPaneGroups
MSysNavPaneGroupToObjects
MSysNavPaneObjectIDs
MSysObjects
MSysQueries
MSysRelationships
コード名称マスタ
コントロールマスタ
メッセージマスタ
取引データ
商品マスタ
商品分類マスタ
得意先マスタ
社員マスタ
郵便番号マスタ
V_商品一覧
V_売上日付
V_得意先台帳
V_社員一覧


販売管理B.accdb のテーブル一覧を OpenSchema(2007以降) で取得します

MSysAccessStorage
MSysACEs
MSysComplexColumns
MSysNavPaneGroupCategories
MSysNavPaneGroups
MSysNavPaneGroupToObjects
MSysNavPaneObjectIDs
MSysObjects
MSysQueries
MSysRelationships
MSysResources
V_商品一覧
V_売上日付
V_得意先台帳
V_社員一覧
コード名称マスタ
コントロールマスタ
メッセージマスタ
取引データ
商品マスタ
商品分類マスタ
得意先マスタ
社員マスタ
郵便番号マスタ


販売管理B.accdb のテーブル一覧を ADOX.Catalog(2007以降) で取得します

MSysAccessStorage
MSysACEs
MSysComplexColumns
MSysNavPaneGroupCategories
MSysNavPaneGroups
MSysNavPaneGroupToObjects
MSysNavPaneObjectIDs
MSysObjects
MSysQueries
MSysRelationships
MSysResources
V_商品一覧
V_売上日付
V_得意先台帳
V_社員一覧
コード名称マスタ
コントロールマスタ
メッセージマスタ
取引データ
商品マスタ
商品分類マスタ
得意先マスタ
社員マスタ
郵便番号マスタ


販売管理B.accdb のテーブル一覧を Access.Application で取得します

MSysAccessStorage
MSysACEs
MSysComplexColumns
MSysNavPaneGroupCategories
MSysNavPaneGroups
MSysNavPaneGroupToObjects
MSysNavPaneObjectIDs
MSysObjects
MSysQueries
MSysRelationships
MSysResources
コード名称マスタ
コントロールマスタ
メッセージマスタ
取引データ
商品マスタ
商品分類マスタ
得意先マスタ
社員マスタ
郵便番号マスタ
V_商品一覧
V_売上日付
V_得意先台帳
V_社員一覧


【table_list.vbs】の処理が終了しました
関連する記事

posted by at 2014-04-04 00:52 | VBScript | このブログの読者になる | 更新情報をチェックする
Seesaa の各ページの表示について
Seesaa の 記事がたまに全く表示されない場合があります。その場合は、設定> 詳細設定> ブログ設定 で 最新の情報に更新の『実行ボタン』で記事やアーカイブが最新にビルドされます。

Seesaa のページで、アーカイブとタグページは要注意です。タグページはコンテンツが全く無い状態になりますし、アーカイブページも歯抜けページはコンテンツが存在しないのにページが表示されてしまいます。

また、カテゴリページもそういう意味では完全ではありません。『カテゴリID-番号』というフォーマットで表示されるページですが、実際存在するより大きな番号でも表示されてしまいます。

※ インデックスページのみ、実際の記事数を超えたページを指定しても最後のページが表示されるようです

対処としては、このようなヘルプ的な情報を固定でページの最後に表示するようにするといいでしょう。具体的には、メインの記事コンテンツの下に『自由形式』を追加し、アーカイブとカテゴリページでのみ表示するように設定し、コンテンツを用意するといいと思います。


※ エキスパートモードで表示しています

アーカイブとカテゴリページはこのように簡単に設定できますが、タグページは HTML 設定を直接変更して、以下の『タグページでのみ表示される内容』の記述方法で設定する必要があります

<% if:page_name eq 'archive' -%>
アーカイブページでのみ表示される内容
<% /if %>

<% if:page_name eq 'category' -%>
カテゴリページでのみ表示される内容
<% /if %>

<% if:page_name eq 'tag' -%>
タグページでのみ表示される内容
<% /if %>
この記述は、以下の場所で使用します


Android SDK ポケットリファレンス
改訂版 Webデザイナーのための jQuery入門
今すぐ使えるかんたん ホームページ HTML&CSS入門
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX