Zippen mit FSO und Javascript

Also er erstellt mir nun eine Zip Datei (schon mal ein riesen Erfolg), auch im Pfad den ich nenne, allerdings leer. in der Console erhalte ich Pfad nicht gefunden - wie es ausschaut für die Dateien, die ich aus dem Pfad über 'var files = ["C:\\cnc\\USER\\projdata"];' holen will.
 
Habs raus. wenn ich die Datei richtig eingebe, also nicht nur den Ordner, etwa so: 'files = ["C:\\cnc\\USER\\projdata\\Projektname.jpg"];' dann macht er es. Müsste also alle Dateien einzeln rein schreiben. In der Erklärung steht jedoch, es würde alle Dateien aus dem Ordner nehmen. Sonst ist es ja mühselig. ansonsten werde ich über einen vorherigen FSO erstmal alle Dateinamen einlesen und die Menge deklarieren, danach dann diese über 'files' dynamisch übermitteln.
 
Perfekte Lösung ist jetzt vorhanden alle Feinheiten sind jetzt dabei. Hier nochmals für alle der kompl. Code:
Javascript:
//Zipper Tool

function ZipFile()
{
        if ( arguments.length == 0 ) {
                return;
        }
        this.open.apply(this, arguments);
};

(function()
{
var fso = new ActiveXObject('Scripting.FileSystemObject');
var shellApp = new ActiveXObject("Shell.Application");

ZipFile.prototype.open = function(name, create, overwrite)
{
        if ( create ) {
                var zipFile = fso.CreateTextFile(name, !! overwrite, 0);
                zipFile.Write('PK\05\06' + new Array(19).join('\0')); // 18 zeros
                zipFile.Close();
        }
        this.name = fso.GetFile(name).Path;
        this.file = shellApp.NameSpace(this.name);
};

ZipFile.prototype.flush = function(timeout)
{
        timeout = Math.max(Number(timeout) || 0, 100);
        WScript.Sleep(timeout);
};
ZipFile.prototype.forEach = function(func)
{
        if ( typeof func != 'function' ) {
                throw new TypeError();
        }

        var arcfile = this.file;
        var items = arcfile.Items();

        for (var e = new Enumerator(items); ! e.atEnd(); e.moveNext()) {
                var folderItem = e.item();
                func(folderItem, arcfile);
        }
};
ZipFile.prototype.forInput = function(input, func)
{
        if ( typeof func != 'function' ) {
                throw new TypeError();
        }

        var arcfile = this.file;

        if ( typeof input == 'string' ) {
                input = [input];
        }

        for (var i = 0; i < input.length; i++) {
                var p = input[i];
                if ( ! p ) {
                        continue;
                }

                var folderItem = null;
                if ( fso.FileExists(p) ) {
                        folderItem = fso.GetFile(p);
                } else if ( fso.FolderExists(p) ) {
                        folderItem = fso.GetFolder(p);
                }
                func(folderItem, arcfile);
        }
};
})();


// Funktion Speichern für HTML ausführen bei klick auf "speichern" - onclick=packProject();

var fileName = ('test')// später null, hier nur zum test, könnte dann variabel sein

function packProject() {
var zipfile = new ZipFile();
zipfile.open("C:\\Ordner\\" + fileName + ".zip", true, true); //pfad zum zippen + Dateiname aus Variable lesen
zipfile.forInput(
    [
        "C:\\Pfad\\zumOrdner\\WelcherGezipptWird"

        // hier können weitere Folder rein
    ],
    function(folderItem, arcfile)
    {
        arcfile.CopyHere(folderItem.Path, 0);
        WScript.Sleep(500); //500 ms zeit geben, dann erst weitter ausführen

// >> für mich noch wichtig, die zip Suffix zu ändern in .CM5 (könnte ja auch .cab oder sonstiges sein...
        setTimeout(function(){
        // Projekt Suffix von .zip in .cm5 umbenennen
        var renFile = new ActiveXObject("Scripting.FileSystemObject"); 
        renFile.MoveFile("C:\\Ordner\\" + fileName + ".zip", "C:\\Ordner\\" + fileName + ".cm5"); 
        renFile = null;
           
            },500);
    });
}
 

Neue Beiträge

Zurück