Wysyłanie skompresowanego pliku za pomoca JScript

Byłbym zapomniał wrzucić

wysyłanie.js
var Shell = new ActiveXObject("WScript.Shell");
var fso = new ActiveXObject("Scripting.FileSystemObject");
var Argumenty = WScript.Arguments;
var Rar = "D:\\sciezka\\do\\Rar.exe";
var parametryRAR = "a -r -pHasloDoPlikuRAR -ac -cl -ep -m5 -rr5p"


//WScript.Echo(WScript.Arguments.Count());
// var SciezkaSkryptu = WScript.ScriptFullName;
// WScript.Echo(SciezkaSkryptu);
// var SciezkaSkryptu = SciezkaSkryptu;

function PodmienSciezke(sciezka){

   re = /\u005C/gi;             //Create regular expression pattern.
   r = sciezka.replace(re, "\u0042\u0042");    //Replace "The" with "A".
   return(r);                   //Return string with replacement made.
}

// WScript.Echo(PodmienSciezke("The man C:Abeeeeee eeeAeeeeAeeee\ hit the ball with the bat."));

/*

e = new Enumerator(fso.GetFolder(SciezkaSkryptu).files);
for (e.moveFirst(); ! e.atEnd(); e.moveNext()) {
  file = e.item();
  WScript.echo(file.name);
}
*/


for (i=0; i<Argumenty.length; i++){
// ShowFileInfo(Argumenty(i)) 
// var nazwa LeftString = Left(MyString, 3);
//var rozdzielSciezke = Argumenty(i).split("\\");
//var rozdzielSciezke = rozdzielSciezke.length;
//WScript.Echo(rozdzielSciezke[0]);
//WScript.Echo(Argumenty(i));
//Shell.Exec(Rar+"a"+Argumenty(i)"")
//var ArgumentyString = Argumenty(i).toString();

// WScript.Echo("Przyjęty argument"+i+"z"+Argumenty.length+" :"+Argumenty(i));


Kompresuj(Argumenty(i));
// Shell.LogEvent(0, "Kompresja pliku : "+Argumenty(i)+", numer"+i+" z "+Argumenty.length);
} 

function WydobadzNazwyPlikow(plik){

//   WScript.Echo("Przyjęty do fso argument: "+plik.Path);
   Plik = fso.GetFile(plik);
   Sciezka = Plik.Path;
   Folder = Plik.ParentFolder ;
   NazwaPliku = Plik.Name;
   NazwaPliku = NazwaPliku.toLowerCase();
   NazwaBezKonca = NazwaPliku.split(".",1);
   InstrukcjaKompresowania = "\""+Folder+"\\"+NazwaBezKonca+".rar\" \""+Folder+"\\"+NazwaPliku+"\"";
   return InstrukcjaKompresowania;
//   Shell.LogEvent(0, "Wysłano do kompresji : "+plik);
// WScript.Echo(InstrukcjaKompresowania);
}


function Kompresuj(plik){
var rar = Shell.Exec(Rar+" "+parametryRAR+" "+WydobadzNazwyPlikow(plik));
//var rar = WScript.Echo(Rar+" "+parametryRAR+" "+WydobadzNazwyPlikow(plik));
if(true){
while(rar.Status == 1){
// WScript.Echo("starus rar : "+rar.Status);
WScript.Sleep(100);
}
Plik = fso.GetFile(plik);
Folder = Plik.ParentFolder;
NazwaPliku = Plik.Name;
NazwaPliku = NazwaPliku.toLowerCase();
NazwaBezKonca = NazwaPliku.split(".",1);
var plikPotwierdzenia = Folder+"\\"+NazwaBezKonca+" kompresja.txt"
// WScript.Echo(plikPotwierdzenia);
potwierdzenie = fso.CreateTextFile(plikPotwierdzenia, true);
potwierdzenie.Write(rar.StdOut.ReadAll());
// WScript.Echo("starus rar : "+rar.Status);
}else{
WScript.Echo("Winrar niezyje");
}
//logowanieTekstem = fso.CreateTextFile("c:\\testfile.txt", true);
//Shell.LogEvent(0, "Kompresja pliku : "+plik);
//Shell.Quit;
Wyslij(plik);
 }

function Wyslij(plik){
Plik = fso.GetFile(plik);
Folder = Plik.ParentFolder;
NazwaPliku = Plik.Name;
NazwaPliku = NazwaPliku.toLowerCase();
NazwaBezKonca = NazwaPliku.split(".",1);
var plikDoWyslania = Folder+"\\"+NazwaBezKonca+".rar"

//WScript.Echo(plikDoWyslania+"|"+NazwaBezKonca);


var Wiadomosc = new ActiveXObject("CDO.Message");

Wiadomosc.Subject = NazwaBezKonca;
Wiadomosc.From = "none@none.pl";
Wiadomosc.To = "none@none.pl";
Wiadomosc.TextBody = NazwaBezKonca;
Wiadomosc.AddAttachment(plikDoWyslania)
Wiadomosc.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2;
Wiadomosc.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "127.0.0.1";
Wiadomosc.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25;
Wiadomosc.Configuration.Fields.Update();
Wiadomosc.Send();
Plik = fso.GetFile(plik);
Folder = Plik.ParentFolder;
NazwaPliku = Plik.Name;
NazwaPliku = NazwaPliku.toLowerCase();
NazwaBezKonca = NazwaPliku.split(".",1);
var plikWyslania = Folder+"\\"+NazwaBezKonca+" wyslany.txt"
wyslanie = fso.CreateTextFile(plikWyslania, true);
//WScript.Echo(Wiadomosc.GetStream.ReadText);
wyslanie.Write(Wiadomosc.Submitted);
}

To wszystko powyżej dziala tak: po przeciagnieciu pliku/plikow na wyslij.js, skrypt pakuje wszystkie pobrane pliki za pomoca rar, z podanymi parametrami (nad ktorymi czeba jeszcze popracowac), a nastepnie tworzy pliki .txt ktore powiadamiaja ze plik zostal spakowany, a potem wysyla (za pomoca serwera SMTP obecnego w windows, a jesli nie jest obecny to czeba go zainstalowac i skonfugirowac), a potem tworzy plik .txt w ktorym mowi ze wyslal.

To bardzo zalosna proba, ale o dziwo dziala.

Nie jest tez zaimplementowana obsluga bledow, bo nie wiem jak sie dobrac do serwera smtp zeby grzecznie mowil czy wyslal wiadomosc, i wogole co tam dobrego robi.

Komentarze

Popularne posty z tego bloga

Mapy ISOK LIDAR z Geoportalu w OSMAnd przez OsmAnd Map Creator

Jak dodać własną mapę do OSMAnd

IE7 PNG i filter :