Hi,
I've got a zip file on an intranet site which i need to extract the file within it and copy it to another folder on a directory and name it as a .txt file.
I have the following script that gets files and copies them to certain directories (run via command line) and changes the extensions if need be.
I have no idea how to code the zip extraction bit into it ... can anyone help?
Thanks in advance,
Julie
I've got a zip file on an intranet site which i need to extract the file within it and copy it to another folder on a directory and name it as a .txt file.
I have the following script that gets files and copies them to certain directories (run via command line) and changes the extensions if need be.
I have no idea how to code the zip extraction bit into it ... can anyone help?
Code:
// set to true if filenames contain yyyy-mm-dd or something similar resulting in alphabetic order being the same as date order
var ALPHABETIC_ORDER_EQUALS_DATE_ORDER = true;
// create column headings in output file
var CREATE_HEADER_ROW = false;
var fs = new ActiveXObject("Scripting.FileSystemObject");
var args = WScript.Arguments;
if (args.length<2) {
WScript.Echo (fs.GetFile(WScript.ScriptFullName).Name + ' sourceFile, destinationFile [, sourceColumnDivider] [, destinationColumnDivider]\n' +
'\tSourceFile can use wildcards (* and ?)\n\tSourceColumnDivider MUST be a valid regular expression!');
WScript.Quit(1);
}
var srcFilePattern = args(0);
var destFile = args(1);
var srcDividerPattern = (args.length>2)&&args(2);
var destDivider = (args.length>3)&&args(3);
if (!destDivider) destDivider = '\t';
var srcFolder = parentFolder(srcFilePattern);
var srcPattern = new RegExp('^'+filename(srcFilePattern).replace(/(\W)/g, '\\$1').replace(/\\\?/g, '.').replace(/\\\*/g, '.*')+'$', "i");
var newest = newestFile(srcFolder, srcPattern);
if (newest) {
if (!srcDividerPattern) {
newest.Copy(fs.BuildPath(srcFolder.Path,destFile));
} else {
var src = newest.OpenAsTextStream(1/*ForReading*/);
var dest = fs.CreateTextFile(destFile, true);
var srcDivider = new RegExp(srcDividerPattern, "g");
if (CREATE_HEADER_ROW) {
var colCount = 1;
var headerRow = 'col1' + destDivider;
var firstRow = src.ReadLine().replace(srcDivider, function () {headerRow += 'col' + ++colCount + destDivider; return destDivider});
dest.WriteLine(headerRow);
dest.WriteLine(firstRow.replace(/\,/g, '.').replace(/([\"])/g, '""'));
}
dest.Write(src.ReadAll().replace(/\,/g, '.').replace(srcDivider, destDivider).replace(/([\"])/g, '""'));
dest.Close();
}
}
function newestFile(srcFolder, srcPattern)
{
var newest;
for (var files = new Enumerator(srcFolder.Files); !files.atEnd(); files.moveNext()) {
var file = files.item();
if (srcPattern.test(file.Name)) {
if (ALPHABETIC_ORDER_EQUALS_DATE_ORDER) {
if (!newest || (file.Name > newest.Name)) newest = file;
} else {
if (!newest || (file.DateCreated > newest.DateCreated)) newest = file;
}
}
}
return newest;
}
function filename(path)
{
if (path.indexOf(':') != 1 && path.indexOf('\\') != 0) {
return fs.GetFile(WScript.ScriptFullName).Name;
} else {
return fs.GetFileName(path);
}
}
function parentFolder(path)
{
if (path.indexOf(':') != 1 && path.indexOf('\\') != 0) {
return fs.GetFile(WScript.ScriptFullName).ParentFolder;
} else {
return fs.GetFolder(path.substring(0, (path.length - fs.GetFileName(path).length) - 1));
}
}
Thanks in advance,
Julie