gianfranco0104
Erfahrenes Mitglied
Ich habe hier ein Zipper Tool mit dem ich einen Ordner einpacken kann, und dann aus dem Arbeitsordner in einen Projektordner verschieben. Klappt super.
Beim wieder öffnen kann ich die zip wieder in den Arbeitsordner schieben aber nicht mehr auspacken.
Hier der EINPACK-Code:
Erst das Allgemeine Zipper-Funktionstool:
Dann die Funktion zum Einpacken und schieben:
und mein vergeblicher Versuch das wieder auszupacken (hinein in "projdata")
Beim wieder öffnen kann ich die zip wieder in den Arbeitsordner schieben aber nicht mehr auspacken.
Hier der EINPACK-Code:
Erst das Allgemeine Zipper-Funktionstool:
Javascript:
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);
}
};
})();
Dann die Funktion zum Einpacken und schieben:
Javascript:
var projFileName = ('testx')// Dateiname
function packProject() {
var zipfile = new ZipFile();
zipfile.open("C:\\cnc\\USER\\" + projFileName + ".zip", true, true); //TempZip erstellen in:
zipfile.forInput(
[
"C:\\cnc\\USER\\projdata"
// hier können weitere Folder rein
],
function(folderItem, arcfile)
{
arcfile.CopyHere(folderItem.Path, 0);
setTimeout(function(){
// Projekt Suffix von .zip in .cm5 umbenennen
var renFile = new ActiveXObject("Scripting.FileSystemObject");
var shell = new ActiveXObject("WScript.Shell");
pathToMyDocuments = shell.SpecialFolders('MyDocuments');
// Erzeuge .CM5-File und in "BENUTZERNAME\Dokumente\CM5Projects" verschieben
renFile.CopyFile("C:\\cnc\\USER\\" + projFileName + ".zip", pathToMyDocuments + "\\CM5Projects\\" + projFileName + ".cm5", 1); // 1=overwrite
renFile.DeleteFile("C:\\cnc\\USER\\" + projFileName + ".zip", true); //Nach verschieben tempZip löschen
renFile = null;
},5000);
});
}
und mein vergeblicher Versuch das wieder auszupacken (hinein in "projdata")
Javascript:
var OpenprojFileName = ('testx')// Dateiname
function openProject() {
setTimeout(function(){
// Projekt Suffix von .cm5 in .zip umbenennen
var renFile = new ActiveXObject("Scripting.FileSystemObject");
shell = new ActiveXObject("WScript.Shell");
pathToMyDocuments = shell.SpecialFolders('MyDocuments');
// Erzeuge .ZIP-File und in "CNC\USER\" verschieben
renFile.CopyFile(pathToMyDocuments + "\\CM5Projects\\" + OpenprojFileName + ".cm5", "C:\\cnc\\USER\\" + OpenprojFileName + ".zip", 1); //1= overwrite
renFile = null;
},5000);
/* //auspacken klappt noch nicht richtig...
var zipfile = new ZipFile();
zipfile.forInput(
[
"C:\\cnc\\USER\\projdata"
// hier können weitere Folder rein
],
zipfile.forEach(function(folderItem, arcfile){
if ( ! folderItem.IsFolder ) {
return;
}
var items = folderItem.GetFolder.Items();
var len = items.Count;
for (var i = 0; i < len; i++) {
var g = items.Item(i);
arguments.callee(g, arcfile);
}
}));
*/
//nach dem Auspacken TempZip Datei löschen...
}