ひできちの楽天ブログ

2017/03/05
XML
テーマ: ソースコード(4)
カテゴリ: 暗号・分割・隠蔽



ちょっとしたことがありまして
ファイルの足し算引き算をしたいなと思いまして・・・はいw
環境は Windows ですよ

足し算っていうのは二つのファイルの単純な結合でよいので以下のような
足し算はWindows標準のコマンドで楽勝ですな
copy /B a.gif + b.gif addaAndB.gif

引き算はその逆で・・・具体的には・・・
片方のファイル(B)のサイズの分をもう片方のファイル(A)の先頭から除去ですなw

ファイルA:123456789123456789
ファイルB:1234
だったとしたら、A-B:56789123456789
という内容のファイルを得たいですな

まぁいろいろな方法があると思いますが・・・・
探せば条件を満たすフリーウェアはあるでしょうけど今回は VBScript で作ってみましたよ
せっかくなのでこちらで公開いたしますよ

ちなみにソースコードが読める方は、一部なんじゃこりゃ?
と思われる箇所があると思いますがw
楽天ブログにソースコードをベタッと貼ると、不等号記号をタグだと認識してくれちゃって
タグ間違いだから保存しませんって怒られちゃったりすることの回避策ですw





@echo off

echo b.gif ファイルをc.gif ファイルと結合する
copy /B b.gif + c.gif addBandC.gif

pause

echo 結合されたファイルからb.gif ファイルを除去して、c.gif を抽出する
Cscript AdivB.vbs addBandC.gif b.gif /s

pause
pause




以下を、 AdivB.vbs のファイル名で保存して利用してください



Option Explicit

Function ReadMe()

Dim HelpMSG1,HelpMSG2
HelpMSG1= _
"機能:ファイルA から、ファイルBのファイル・サイズの分だけ、先頭から除去したファイルを生成する。" & vbCrLf & _
"利用方法: AdivB filenameA filenameB [/s] " & vbCrLf & _
"    : 第3引数は省略可能。/s を指定するとサイレント・モードとなり一切のメッセージ表示をしません " & vbCrLf & _
"" & vbCrLf

HelpMSG2= _
"備考:AのファイルサイズよりもBのほうが大きい場合の検査だけは組み込んでいますが " & vbCrLf & _
"データが一致しているかどうかは検査していません。" & vbCrLf & _
"" & vbCrLf & _
"このスクリプトは、VBS で記述しているという一点でのみ存在価値があると思っています。" & vbCrLf & _
"" & vbCrLf & _
"著作権とか気にせず自由に自己責任で利用してください。利用に関しては一切の責任を負いません。" & vbCrLf & _
"" & vbCrLf & _
"参考文献:http://blog.goo.ne.jp/n-best/e/a564cbd4cb1e904b45d701227ed555a7"

ReadMe= HelpMSG1
End Function


'--------------------------------------
'以下メインルーチン
'--------------------------------------

'COM の定数を以下のようにクラスで擬似的に定義してます
Dim StreamTypeEnum
Dim StreamReadEnum
Dim SaveOptionsEnum
Call Create_Const_Class()

Call Main()

Sub HelpMSG(option1)
Dim ReadMeMSG
ReadMeMSG=ReadMe()
ReadMeMSG= "引数の指定が間違っています:(" & option1 & ") " & vbCrLf & vbCrLf & ReadMeMSG
WScript.Echo ReadMeMSG
WScript.Quit

End Sub


Sub Main()
Dim IsSilentMode

Dim args, arg
Dim BYTESA,BYTESB

Set args = WScript.Arguments
If args.Count=0 Or args.Count=1 Then
Call HelpMSG(1)
End If

If args.Count=3 Then
if LCase(args(2))="/s" Then
IsSilentMode=true
Else
Call HelpMSG(2)
End If
End If


Dim sourceStreamA
Dim sourceStreamB
Dim outputStream

Dim InputFilenameA
Dim InputFilenameB
Dim OutputFilename
Dim objFS, ret, objFileA, objFileB

InputFilenameA = args(0)
InputFilenameB = args(01)

Set args = nothing

Set objFS = CreateObject("Scripting.FileSystemObject")

ret = objFS.FileExists(InputFilenameA)
If ret Then
Set objFileA = objFS.GetFile(InputFilenameA)

BYTESA= objFileA.Size
if not IsSilentMode then
WScript.Echo "A target file is " & InputFilenameA & vbCrLf & "(" & FormatNumber(BYTESA, 0) & " byte)"
End if
Set objFileA = nothing

Else
if not IsSilentMode then
WScript.Echo "Can not Open A file ."
End if
WScript.Quit

End If

ret = objFS.FileExists(InputFilenameB)
If ret Then
Set objFileB = objFS.GetFile(InputFilenameB)

BYTESB= objFileB.Size

If int(BYTESA/BYTESB)=0 then
if not IsSilentMode then
WScript.Echo "A File size is too small. It requires more than B FIle size."
End if
WScript.Quit
End if

if not IsSilentMode then
WScript.Echo "B target file is " & InputFilenameB & vbCrLf & "(" & FormatNumber(BYTESB, 0) & " byte)"
End if

Set objFileB = nothing

Else

if not IsSilentMode then
WScript.Echo "Can not Open B file ."
End if
WScript.Quit

End If

Set objFS = nothing

Set sourceStreamA = CreateObject("ADODB.Stream")
sourceStreamA.Type = StreamTypeEnum.adTypeBinary
sourceStreamA.Open
sourceStreamA.LoadFromFile InputFilenameA
sourceStreamA.Position = 0

' Set sourceStreamB = CreateObject("ADODB.Stream")
' sourceStreamB.Type = StreamTypeEnum.adTypeBinary
' sourceStreamB.Open
' sourceStreamB.LoadFromFile InputFilenameA
' sourceStreamB.Position = 0

Set outputStream = CreateObject("ADODB.Stream")
outputStream.Type = 1
outputStream.Open
outputStream.Position = 0


'読み捨て
sourceStreamA.Read( BYTESB )

OutputFilename = InputFilenameA & "div" & InputFilenameB

outputStream.Write sourceStreamA.Read(StreamReadEnum.adReadAll)
outputStream.SaveToFile OutputFilename, SaveOptionsEnum.adSaveCreateOverWrite

sourceStreamA.Close

if not IsSilentMode then
WScript.Echo "Executed a Successfully."
End if

End Sub


Sub Create_Const_Class()
set StreamTypeEnum = new clsStreamTypeEnum
set StreamReadEnum = new clsStreamReadEnum
set SaveOptionsEnum = new clsSaveOptionsEnum

End Sub

Class clsStreamTypeEnum
'https://msdn.microsoft.com/ja-jp/library/cc389884.aspx
public adTypeBinary
public adTypeText

Sub Class_Initialize()
adTypeBinary=1
adTypeText=2
End Sub
End Class

Class clsStreamReadEnum
'https://msdn.microsoft.com/ja-jp/library/cc389881.aspx
public adReadAll
public adReadLine

Sub Class_Initialize()
adReadAll=-1
adReadLine=-2
End Sub
End Class


Class clsSaveOptionsEnum
'https://msdn.microsoft.com/ja-jp/library/cc389870.aspx
public adSaveCreateNotExist
public adSaveCreateOverWrite

Sub Class_Initialize()
adSaveCreateNotExist=1
adSaveCreateOverWrite=2
End Sub
End Class







お気に入りの記事を「いいね!」で応援しよう

最終更新日  2018/10/06 02:00:06 AM
コメントを書く
[暗号・分割・隠蔽] カテゴリの最新記事


【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! -- / --
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x

PR

キーワードサーチ

▼キーワード検索

カテゴリ

カテゴリ未分類

(38)

楽天サービス

(45)

ポイント生活

(51)

電子書籍

(30)

yahoo

(3)

クレジットカード

(36)

楽天Edy

(35)

楽天銀行デビットカード

(14)

nanacoカード

(8)

WAON

(2)

ジャパンネット銀行

(4)

ECサイト比較

(17)

majica カード

(5)

Tポイント

(3)

動画配信

(62)

デビットカード

(10)

PASMO

(2)

電気自由化

(2)

音楽配信

(9)

楽天ブックス

(9)

au WALLET

(9)

年末商戦

(4)

ふるさと納税

(2)

Yahooプレミアム会員特典

(7)

楽天ポイント獲得数報告

(5)

ポイント交換

(2)

クレカ入会特典

(6)

楽天市場

(7)

電子マネー

(12)

福袋・初売り

(2)

BABYMETAL

(7)

Yahooショッピング

(30)

Yahooクレジットカード

(6)

税金対策

(2)

楽天銀行プリペイドカード

(3)

楽天ペイ

(5)

ゾンビ

(4)

銀行カード

(2)

ヤフオク!

(1)

ポイント・キャンペーン

(23)

Amazon

(3)

Ponta

(2)

ギタリスト

(3)

プリペイドカード

(1)

クーポン・キャンペーン

(18)

暗号・分割・隠蔽

(2)

ガジェット

(43)

プログラミング

(6)

ネット銀行

(7)

Chrome 機能拡張

(1)

リアル銀行

(1)

数学と算数

(14)

格安SIM

(5)

将棋

(89)

クラウド

(2)

国語

(3)

ニュース

(26)

社会

(2)

電子決済

(2)

割引券

(0)

日記

(1)

TIPS

(3)

ソフトウェア

(16)

商品レビュー

(1)

映画視聴

(4)

洋楽

(2)

マンガ

(0)

お買い物パンダ

(1)

3Gケータイ3Gスマホ

(3)

互換オフィス

(4)

IT用語

(0)

地球温暖化

(41)

植民地時代

(0)

古代史

(1)

楽天ポイントビットコイン

(9)

ITの仕事

(1)

楽天購入品リスト

(0)

ご挨拶

(0)

楽天リワード

(1)

Visual Studio

(4)

wikipedia

(1)

コロナ

(1)

python

(4)

地球温暖化懐疑/否定論者

(13)

youtubeライブカメラ

(1)

自然災害

(4)

SNS

(1)

動物

(1)

楽天ブログ

(4)

藤岡幹大

(1)

グレタ

(2)

HTML

(1)

コメント新着

お気に入りブログ

9/28(土)メンテナ… 楽天ブログスタッフさん

ものぐさ父さんの子… ものぐさ父さん
楽天レシピスタッフB… 楽天レシピスタッフさん
楽天アフィリエイト… 楽天アフィリエイト事務局スタッフさん
Monkung Factory for… もんくんさん

プロフィール

ひできち(hidekichi45)

ひできち(hidekichi45)

バックナンバー

2024/10
2024/09
2024/08
2024/07
2024/06
2024/05
2024/04
2024/03
2024/02
2024/01

© Rakuten Group, Inc.
X
Design a Mobile Site
スマートフォン版を閲覧 | PC版を閲覧
Share by: