これは使い道があるのだろうか・・・?
使い方は、
1.jsファイルにファイル、またはフォルダをドロップする。
⇒スクリプト内にファイル、またはフォルダのデータが組み込まれる。
2.jsファイルを実行
⇒1でドロップしたファイル、またはフォルダが復元される。
1でファイル、またはフォルダをZip圧縮し、Base64エンコードした文字列を
スクリプト内にコメントとして埋め込みます。
スクリプトサイズをできるだけ小さくしているので、(2,455 byte)
難読化されているような状態です。
見やすさの為、複数行に分けていますが
使用する際は、すべて1行にまとめてファイルにしてください。
zipの展開、圧縮やBase64変換の読めるコードは
wscjsfwを参照してください。
ZipFile.jsf、Base64.jsfを見れば分かると思います。
(テキストファイルです)
ファイル
追記:2012.02.05
上のファイルがなんかダウンロードできない状態になっていたので上げ直しました。
以下コード
var A,B,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,X,Y,Z,u,v,w,x,y;
A=new ActiveXObject("scripting.filesystemobject");
B=new ActiveXObject("Shell.Application");
V=["ascii","iso-8859-1"];
D=WScript.ScriptFullName;E=D+"$";
F=E+".zip";
H=function(){
var a=new ActiveXObject("ADODB.Stream");
a.Type=2;
a.Charset=V[1];
a.Open();
return a;
};
I=function(a,b){
var c,d,e,f,g,h;
c=a.Size-a.Position;
b=Math.min(c,b);
d=[];
e=a.Position;
f=J(a,e,0,b);
g=J(a,e,1,b);
for(h=0;h<b;h++){
d.push(f.charCodeAt(h)|(g.charCodeAt(h)<128?0:128));
}
return d;
};
J=function(a,b,c,d){
K(a,0);
a.Charset=V[c];
K(a,b);
return a.ReadText(d);
};
K=function(a,b){a.Position=b;};
L=function(a,b){
var c,d;
c=a.Position;
J(a,c,1,0);
for(d=0;d<b.length;d++){
a.WriteText(String.fromCharCode(b[d]&255));
}
};
M=function(a){a.Close();};
N=function(a,b){
return A.OpenTextFile(a,b,b!=1);
};
O=function(a){X=a.ReadLine()};
P=function(a,b){a.WriteLine(b?b:X);};
Q=function(a){return B.NameSpace(a);};
R=function(a){
var b,c,d,e;b="";
c=Math.floor(a.length/3);
d=0;
for(e=0;e<c;e++){
b+= Z[a[d]>>2]+
Z[((a[d]<<4)|(a[d+1]>>4))&63]+
Z[((a[d+1]<<2)|(a[d+2]>>6))&63]+
Z[(a[d+2])&63];
d+=3;
}
switch(a.length%3){
case 1:
b+= Z[a[d]>>2]+
Z[(a[d]<<4)&48]+"==";
break;
case 2:
b+= Z[a[d]>>2]+
Z[((a[d]<<4)|(a[d+1]>>4))&63]+
Z[(a[d+1]<<2)&60]+"=";
break;
}
return b;
};
S=function(a){A.DeleteFile(a,true);};
T=function(a){
var b,c,d,e,f,g,h,i;
b=[];
c=Math.floor(a.length/4)-1;
d=U(a);
e=0;
g=function(){
b.push(((Y[d[e]]<<2)|(Y[d[e+1]]>>4))&255);
};
h=function(){
b.push(((Y[d[e+1]]<<4)|(Y[d[e+2]]>>2))&255);
};
i=function(){
b.push(((Y[d[e+2]]<<6)|(Y[d[e+3]]))&255);e+=4;
};
for(f=0;f<c;f++){
g();
h();
i();
}
if(d[e+2]=="="){
g();
}
else if(d[e+3]=="="){
g();
h();
}
else{
g();
h();
i();
}
return b;
};
U=function(a){
var b=[];
while(a!=""){
b.push(a.substring(0,1));
a=a.substring(1);
}
return b;
};
Z=U("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/");
try{G=WScript.Arguments.Item(0);}catch(z){}
if(G){
y=H();
L(y,[80,75,5,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);
y.SaveToFile(F,2);
M(y);
y=Q(F);
x=A.FolderExists(G);
w=Q(x?G:A.GetParentFolderName(G));
w=x?w:w.ParseName(A.GetFileName(G));
y.CopyHere(w);
while(y.Items().count!=1)
WScript.Sleep(100);
y=N(D,1);
O(y);
M(y);
y=N(E,2);
P(y);
P(y,"/*");
x=H();
x.LoadFromFile(F);
while(!x.EOS)
P(y,R(I(x,60)));
M(x);
P(y,"*/");
M(y);
S(D);
A.MoveFile(E,D);
}
else{
Y=[];
for(y=0;y<Z.length;y++){
Y[Z[y]]=y;
}
y=N(D,1);
O(y);
O(y);
x=H();
O(y);
while(X!="*/"){
L(x,T(X));O(y);
}
M(y);
x.SaveToFile(F,2);
M(x);
y=Q(F);
x=Q(A.GetParentFolderName(D));
x.CopyHere(y.Items());
}
S(F);
WScript.Echo("完了");
2010.08.06