◆Windows7で「BATファイル(*.bat)」や「VBS」を直接スタートメニューのやタスクバーやに登録する
Windows7では、で起動するアプリケーションが直接スタートメニューのやタスクバーやに
登録できません
実行したいBATファイルを作ります。(app.batとします。)
そして、このファイルのショートカットを[ショートカットの作成]または[新規作成]→[ショートカット]で作成し、「リンク先」の内を C:\Windows\System32\cmd.exe /C app.bat
と設定します。このショートカットを右クリックしてコンテキストメニューを開くと、「スタートメニューに表示する」「タスクバーに表示する」が選択できるようになっているはずです。
オプション/Cは、指定したファイルの処理が終わったらDOSプロンプトを終了するモードです。/Cの代わりにオプション/Kを指定すれば、処理が終わってもDOSプロンプトを開いたままにできます。
同じように VBSも の場合は
C:\Windows\winsxs\wow64_microsoft-windows-scripting_31bf3856ad364e35_6.1.7600.16385_none_aeb1ef0f4e6bba1d\wscript.exe
のショートカットを作成し、「リンク先」の内を
C:\Windows\winsxs\wow64_microsoft-windows-scripting_31bf3856ad364e35_6.1.7600.16385_none_aeb1ef0f4e6bba1d\wscript.exe ***.vbs と設定
作業ホルダー を ***.vbs が存在するホルダーを設定する(***.vbs から呼び出すプログラム等が絶対パスで記述されていない場合必ず必要です。上記のBATファイルに関しても同じです)
◆テキスト置き換え
Sheft-JIS では 筠 のコードが存在しないので処理できない
現在WEBで標準となっている UTF-8 で処理する
okikae.vbs
'=================================
'置き換え辞書(UTF-8)により
' テキストを置き換える
'=================================
Option Explicit
Class UTF8FileReader
Private name, errNo, errDesc
' コンストラクタ
Private Sub Class_Initialize
name = "UTF8FileReader"
End Sub
' ファイルの中身を戻り値として返す
Public Function ReadAll(fileName)
On Error Resume Next
Dim medthodName : medthodName = name & "." & "ReadAll"
With CreateObject("ADODB.Stream")
.Charset = "UTF-8"
.Open
.LoadFromFile(fileName)
ReadAll = .ReadText
.Close
End With
If Err.Number <> 0 Then
errNo = Err.Number
errDesc = Err.Description
On Error GoTo 0
Call Err.Raise(errNo, medthodName, errDesc)
End If
End Function
' ファイルを1行ずつ読み込み、配列に格納して返す
Public Function ReadByLine(fileName)
On Error Resume Next
Dim medthodName : medthodName = name & "." & "ReadByLine"
Dim arrRet()
ReDim Preserve arrRet(0)
With CreateObject("ADODB.Stream")
.Charset = "UTF-8"
.Open
.LoadFromFile(fileName)
Do While Not .EOS
arrRet(UBound(arrRet)) = .ReadText(-2)
ReDim Preserve arrRet(UBound(arrRet) + 1)
Loop
.Close
End With
If Err.Number <> 0 Then
errNo = Err.Number
errDesc = Err.Description
On Error GoTo 0
Call Err.Raise(errNo, medthodName, errDesc)
End If
ReadByLine = arrRet
End Function
End Class
'-------クリップボードの取り込み
dim doc
dim strcb
set doc = createobject("htmlfile")
strcb = doc.parentwindow.clipboarddata.getdata("text")
wscript.echo strcb 'クリップボードの内容を表示
set doc = nothing
'-------- URL の文字列の置き換え
dim patrn, strng
strng = strcb
patrn ="(https?|ftp)(:\/\/[a-zA-Z0-9;\/?:\@&=\+$,\-_\.!~*'\(\)%#]+)"
Dim regEx, Match, Matches ,RetStr ' 変数を作成します。
Set regEx = New RegExp ' 正規表現を作成します。
regEx.Pattern = patrn ' パターンを設定します。
regEx.IgnoreCase = True ' 大文字と小文字を区別しないように設定します。
regEx.Global = True ' 文字列全体を検索するように設定します。
Set Matches = regEx.Execute(strng) ' 検索を実行します。
For Each Match in Matches ' Matches コレクションに対して繰り返し処理を行います。
'RetStr = RetStr & "一致する文字列が見つかった位置は、"
'RetStr = RetStr & Match.FirstIndex & " です。一致した文字列は、"
'RetStr = RetStr & Match.Value & " です。" & vbCRLF
strng = Replace(strng, Match.Value, "http:省略")
Set Matches = regEx.Execute(strng)
Next
'msgbox strng
strcb = strng
dim fr
Set fr = New UTF8FileReader
'WScript.Echo fr.ReadAll("db_test.txt")
If Err.Number <> 0 Then
' エラー処理
End If
Dim sA
sA = fr.ReadAll("db_utf-8.txt") '全文を一度に読み込む
' 末尾に改行がついていたら削除。空の配列要素が最後に追加されるのを防ぐ
If InStrRev(sA, vbCrLf) = Len(sA) - Len(vbCrLf) + 1 Then
sA = Left(sA, Len(sA) - Len(vbCrLf))
End If
' 改行コードで分割
dim lines
lines = Split(sA, vbCrLf)
Dim ubqA
dim k
ubqA = UBound(lines)
'msgbox ubQA
ReDim qA(ubqA)
For k = 0 To UBound(qA)
qA( k )=Split(lines( k ), ",") '一次配列にそれぞれ二次配列をセット
Next
'msgbox qA(0)(0)
Dim j
For j = 0 To ubqA
If qA(j)(0) <> "" Then _
strcb = Replace(strcb, qA(j)(0), qA(j)(1))
'Msgbox qA(j)(0)
'msgbox strcb
Next
'-------ファイルの書き出し
'出力ファイル名(書き出し先ファイル)
Dim outputFileName
'outputFileName = "okikae_tests.txt"
outputFileName = "x:\okikae.txt"
'出力ストリームの生成・設定(テキスト、UTF-8)
Dim outStream
Set outStream =CreateObject("ADODB.Stream")
outStream.type = 2
outStream.charset = "UTF-8" '出力ファイルの文字コード設定
outStream.open
outStream.WriteText strcb, 1 'WriteTextの第二引数:0:文字列のみ書き込む 1:文字列+改行を書き込む
On Error Resume Next
'出力ファイル生成
outStream.SaveToFile outputFileName, 2 '1:ファイルがない場合はファイル作成 2:ファイルがある場合は上書き
If Err.Number <> 0 Then
If Err.Number = 3004 Then
MsgBox outputFileName & "へ書きこめません"
Else
'そのほかのエラーの場合。
MsgBox "想定外のエラーです。"
End If
End If
'エラー情報をクリアする。
Err.Clear
'ストリームを閉じる
outStream.Close
'オブジェクトを解放
Set outStream = Nothing
Msgbox "END"