#7167

arnold
Member

hi yutaka. first i want to ty for writing the script!
i tried this with one of the good scripts on this forum. i get a positive message, but also an error (ERRORS Root Folder: D:test) in a new file. and when i check the files, nothing happened 😕 here is the script i try to use in the test


sRootDir = "D:test"; // root folder
editor.NewFile();
var docResult = editor.ActiveDocument;
docResult.writeln( "ERRORS Root Folder: " + sRootDir );

Redraw = false;
var nTotalFiles = EnumerateFolder( sRootDir );
Redraw = true;

alert( "Finished successfully. Total of " + nTotalFiles + " files processed." );


function EnumerateFolder( sFolder )
{
var nTotal = 0;
var fso, f, fc, s;
fso = new ActiveXObject("Scripting.FileSystemObject");
f = fso.GetFolder(sFolder);
fc = new Enumerator(f.files);
for (; !fc.atEnd(); fc.moveNext())
{
sItem = String( fc.item() );
nLen = sItem.length;
if( sItem.indexOf( "_" ) == -1 && sItem.substr( nLen - 4 ) == ".htm" ){ // make sure file or folder does not begin with _ and the file extension is .htm.
DoSomething( sItem );
nTotal++;
}
}

fc = new Enumerator(f.SubFolders);
s = "";
for (; !fc.atEnd(); fc.moveNext())
{
sItem = String( fc.item() );
nLen = sItem.length;
if( sItem.indexOf( "_" ) == -1 ){ // make sure folder name does not begin with _
nTotal += EnumerateFolder( sItem );
}
}
return nTotal;
}

function DoSomething( sPath )
{
// helper function that we use to put the entire text of a file in a string
// **************************************************
function string_fromfile(sUrl){
var ForReading = 1, ForWriting = 2, ForAppending = 8;
var fso, fob;
try{
fso = new ActiveXObject("Scripting.FileSystemObject");
fob = fso.OpenTextFile(sUrl, ForReading);
var strRead = fob.ReadAll();
fob.Close();
fso = null;
return strRead;
}
catch(e){
if(000){}
else if(e.message == 'Input past end of file'){return '';} // blank file
else if(e.message == 'File not found'){return ''} // not found
else if(e.message != ''){return ''} // other problem
};
}

// main code
// **************************************************
stext = (string_fromfile(document.FullName));
smatch = '';

// look inside the raw text and see if we can find something inside the h1 tag
try{
amatch = stext.match(/<h1>([^<]+)<.h1>/);
smatch = amatch[1];
}catch(ex){ smatch = '';}

// did we actually find something inside the h1 tag?
if(smatch != ''){
// fix what we found so that unwanted characters get changed into a dash
smatch = smatch.split(/[W]+/).join('-');
// extract the parent directory and combine it with what we found to form a new filename
newname = (document.FullName.split(/x5c/).slice(0,-1).join("x5c") + "x5c" + smatch + '.htm');
// save a copy of the document with its new name
document.Save( newname );
}
}