これはテキストファイルの十六進ダンプを出力するスクリプトです。
エラー処理は特にしていません。ソースコードを読んだ上でお使いください。
このスクリプトの改変・再配布等は自由です。
'テキストファイルの十六進ダンプイメージを出力するスクリプト '制作者 clone_01@yahoo.co.jp '最終更新 午後 04:23 00/11/10 '使用上の注意 'このスクリプトを使った事により発生したいかなる損害についても制作者は一切責を負いません。 ' ソースコードを読んだ上で、自己責任において使ってください。 ' '元になるファイルのサイズ(単位:バイト)が奇数の場合は一時的に作業用ファイルを生成します。 ' これはユニコードとしてファイルからデータを読み込むためファイルサイズが奇数だと最後の1バイトが読み込めないので、 ' 作業用ファイルの最後尾にスペース(ASCIIコード)を付加し、ファイルのサイズを偶数にするからです。 ' '実行後に スクリプトと同じフォルダに "DUMP_元のファイル名.txt" という名前のファイルを生成します。 ' 同名のファイルがあった場合は上書きします。 ' 'ファイルサイズが大きいと処理できない事があります。 ' ReadAllでデータを全部読み込んでいるからです(^^;。 '使い方 'テキストファイルをこのスクリプトのアイコンにドラッグ&ドロップするだけ。 '処理が終わると"完了"のメッセージボックスがでます。 Option Explicit Dim WshShell Dim i For i = 0 to WScript.Arguments.Count - 1 textDump WScript.Arguments(i) Next Set WshShell = WScript.CreateObject("WScript.Shell") WshShell.AppActivate "textDump.vbs" MsgBox "完了",vbOKOnly,"テキスト ダンプ" Sub textDump(filePath) Const ForReading = 1, ForWriting = 2, ForAppending = 8 Const TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0 Const TMP_FILE_NAME="TMP_textDump.tmp" Dim fso,file,textStream Dim fName,fPath Dim tmpStr,oddFlg Dim count 'メモ帳を開いて表示する場合 Dim WshShell Set fso = CreateObject("Scripting.FileSystemObject") Set file=fso.GetFile(filePath) '名前を取得しておく fName=file.Name If file.size>0 Then 'ファイルサイズが奇数の場合はテンポラリファイルにコピーし、ファイルの最後尾にスペース(ASCIIコード)を付加する If file.size mod 2 =1 Then file.Copy TMP_FILE_NAME,True Set file=fso.GetFile(TMP_FILE_NAME) Set textStream = file.OpenAsTextStream(ForAppending,TristateFalse) textStream.Write Chr(&H20) textStream.Close oddFlg=True Else oddFlg=False End If 'ユニコードで文字列取得 Set textStream = file.OpenAsTextStream(ForReading,TristateTrue) tmpStr=textStream.ReadAll textStream.Close If oddFlg Then file.Delete tmpStr = toHex(tmpStr,oddFlg) End If '名前をつけて保存 If LCase(Right(fName,4)) <> ".txt" Then fName=fName & ".txt" fPath="DUMP_" & fName Set textStream=fso.CreateTextFile(fPath,True) textStream.Write(tmpStr) textStream.Close 'メモ帳を開いて表示する。 Set WshShell = WScript.CreateObject("WScript.Shell") WshShell.Run ("notepad.exe " & fPath) End Sub Function toHex(mainStr,oddFlg) Dim i,count,bufStr,length length=LenB(mainStr) If oddFlg Then length=length-1 For i=1 to length count=count+1 If count>16 Then bufStr = bufStr & vbCrLf count=1 End If bufStr = bufStr & Right("0" & Hex(AscB(MidB(mainStr,i,1))),2) & " " Next toHex=bufStr End Function
もどる |
(◎←) ((( ▽ ))) - - |
This page hosted by
Get your own Free Home Page