' Given a folder name, will create an "index.htm" for the folder. ' The index.htm file will be placed in the folder and will replace ' any existing index.htm file. Icons with ".gif" file extensions ' will also be created and can be placed in the same folder or in ' a separate common images folder. Option Explicit Const INDEX_FILE = "index.html" 'Set to name of desired index web page Const MAKE_PARENT_LINK = True 'Do you want a link to "../" for the parent directory? 'All below constants may be empty strings Const HEADER_FILE = "" 'Set to name of file whose text will be inserted top of page Const FOOTER_FILE = "" 'Name of file whose text will be appended to bottom of page Const GRAPHIC_PREFIX = "index_icon_" 'Prefixed to graphics like "index_icon_xls.gif" instead of just "xls.gif". Unique name essential if graphics will be in indexed folder." Const DISK_GRAPHIC_PATH = "" 'If used, must have trailing backslash. Location where graphic files are written to disk. Leave blank to write in indexed folder. Const WEB_GRAPHIC_PATH = "" 'LEAVE BLANK. Automatically calculated. If used, must have trailing backslash. Only use if disk and web paths are unrelated. Script will display message telling you when you need this. Dim blnGoodFile Dim str000, strAUDIOCD, strAVI, strBARCODE, strBAS, strBAT Dim strBMP, strCD, strCDR, strCHM, strCLASS, strDLL, strDOC Dim strEML, strEXE, strFILM, strFIREFOX, strFLD, strFLOPPY Dim strFORM, strGRAPH, strHLP, strIE, strINI, strINSTALL Dim strISO, strJAVA, strMDB, strMID, strMP3, strMPLAYER Dim strPDB, strPDF, strPHP, strPPT, strPRC, strPS, strREAL Dim strREG, strSLN, strSNP, strSQL, strSWF, strSXC, strSXD Dim strSXM, strSXW, strTTF, strTEXT, strTXT, strUP, strVBP Dim strVBS, strVCF, strVCS, strVDP, strVS, strWAV, strWMV Dim strWRI, strWSC, strXLS, strXML, strZIP Dim strFileInfo() Dim strFolderInfo() Dim strIconFile, strIconHexData, strIconLink, strFileLink, strFileName, strFileSize, strFileModified Dim strFileExtension, strStringName, strDirectory Dim dic Dim fs Dim strIndex 'As String Dim fil 'As Scripting.Files Dim fils 'As Scripting.File Dim fol 'As Scripting.Files Dim fols 'As Scripting.File Dim intCounter 'As Integer Set fs = CreateObject("Scripting.FileSystemObject") 'Get the folder we will be creating an index for If Wscript.Arguments.Count = 0 Then MsgBox "Drop a directory on this script" Wscript.Quit 1 End If strDirectory = WScript.Arguments(0) If Not fs.FolderExists(strDirectory) Then MsgBox "Drop a DIRECTORY on this script." Wscript.Quit 1 End If If WEB_GRAPHIC_PATH = "" Then If RelativePath(strDirectory, DISK_GRAPHIC_PATH) = "" Then MsgBox "I can't create a relative path from """ & strDirectory & """ to """ & DISK_GRAPHIC_PATH & """. Either fix these paths or define a value for the WEB_GRAPHIC_PATH constant." WScript.Quit 1 End If End If If fs.FileExists(fs.GetAbsolutePathName(fs.BuildPath(strDirectory, INDEX_FILE))) Then If MsgBox ("Replace the existing " & INDEX_FILE & "?", 4) = vbNo Then Wscript.Quit 1 End If 'Hex-encoded GIF icon data str000 = "47494638396110001000B30000040604048604848684C4C6C40406FCFCFEFCFC0604FCFE04CCCECC291CCC57F4127C7700FF0085FF0099FF00E2FF007721F90400000000002C000000001000100003044CB01441AB9578E68CC4F69B3468181802285086D9A04A26EBAE06968A2F6918001FA8889C875070A5543398844000340F4861217A2C4AA70001A210E45E59D615380C1B98CFE824F6C8461522003B" strAUDIOCD = "47494638396110001000B3000004020404FE0484868404FEFCC4C6C4FCFE04FCFEFC00000011000001000000130000000001060000000000000000000021F90400000000002C000000001000100003045AD01800A4BD9852C1399615551444E95D00078C655B81C020AC646B1021150CB45DE6BF58EDE63208701459AAF5332203811013E7B4CD040366E558221A02856CD3492C8107D997B16C1EA1D5D51674049770E4D1FA4545C14400003B" strAVI = "47494638396110001000B30000040204848684C4C6C4FC0204FCFEFC0100002D08130000001100900100F60013130000000108980000F600001300000021F90400000000002C000000001000100003044390C84909B895DE8DB32582008880578663579DA115942B188AC19B71576DC713A0C39ACB8056034A58A95F70F4221A7DC5A6CFE812587CA45BE0C831CDA82695471201003B" strBARCODE = "47494638396110001000B30000040204848684FCFEFC7700005E9B580200FF3C081700000011000001000000130000000001060000000000000000000021F90400000000002C000000001000100003043350C849ABBD1508A0BBDFD22776E146722608A2A32AA66C19B3E47ABE761EEB70FDD22E582F38C3693093A324C0640A9A814904003B" strBAS = "47494638396110001000B3000004020404860404868404FE0484028404FEFC848604FCFE04FC02FCFCFEFC0013140000000106580000B800001400000021F90400000000002C000000001000100003044C30C99900A0974E7B322099061CC60520A0268D658586DB68B93356588000DC70756F3AD1CE64B9F14C841460C034159E16140810A87A04C193B2E809D53647958AD3126F0EA4DE386D164E22003B" strBAT = "47494638396110001000B30000040604848604848684C4C6C4FCFEFCCCCECC040684FCFE04C4C6CC291CCC57F4127C7700FF0055FF001FFF00F8FF007721F90400000000002C000000001000100003044A90C849ABBD54E8CDBB46032886E42000C260AC6CBB9EA96B10004DC385A7A30396A1054A2050FBA5288003D11894040E1A406002EB4D0083435182AB00B65C9E8F8AD2EDBEE8B4FA1B01003B" strBMP = "47494638396110001000B3000004060484860404868404FEFC040684CBCCCB606260FBFDFBA6A7A6FCFE048604060406FCCC0664868886FC060474767421F90400000000002C0000000010001000030469F048691AA860D2BC2FE04786494D28141C60198775380A200CC4118459532C002CD381824B42102C183141239008808802A48CE9D4B41A8F06569B1D92340544A1907DB684DB87E1636D49C6084463DD2E1DE072BAD57E47EB357C7073666E6F61087F1A1F8B8B1A11003B" strCD = "47494638376110001000B30A00040204048604048684840284C4C6C404FE048402048486048486840402FCFCFEFC0000000106000000000000000000002C000000001000100000046B504909AA9D5855520E224495014292041E484D002194E847282040092EFCD19F0D1440D749F6E90102016020D42A121095C1C040B5699ED88DD30AA01AA4152702DA4A16905AEC3390C0010B3E2C8FFD72715BB4E7818EB36A2420087B26027E142D7A054C192C16221811003B" strCDR = "47494638396110001000B300003D362CE8B425ADB2B1EBF2204F477CA1EF62AE851ADBF75244FEA448DED478839E99804FFBFDFBC3C646DBFB8A6D5A2821F90400000000002C000000001000100003047690494996108ACCCD88734DD82489C2299F5388458198D452A46273B870631833181EC083A0130AF01EC84760700855444698E051B3540500C0B476B966B722C1A268BC4CA9A205A111581E0C8087AC30703216CBC120106A01EB14064B7C2241071A816D351F053013158A7D05881C1D0B0A0A6A1C11003B" strCHM = "47494638376110001000B30500040604848604848684C4C6C4848284FCFEFC040684FCFE04CCCECC291CCC57F4127C7700FF0055FF001FFF00F8FF00772C0000000010001000000454B0C82983B5349770FA198156791E42685C6779404108B00074033C74AD300D401FC82C97C830A3E532B2D4A7252CC4742904D329FAC52627E7B5309DE8503D4048927D7283926FA67898663381F0D819AEF73411003B" strCLASS = "47494638396110001000B300000402049189874644469C0204D7D9D7BC5A5CB8BAB82522247C6F719C3A3CFCFEFCFC7A7C7C2224F40204FC3A3C9C9E9C21F90400000000002C000000001000100003046050C9298FA0980A70723E40E86160D829C24995E12501EE041E65B701A4B0380C87FA954D61D168C0500257F260481407089A0AA40828108381F5A14AD11012024162988600860C01274972C698B586260924C1721221D5161862327C13471311003B" strDLL = "47494638376110001000B30400040604848604848684C4C6C4FCFEFCFCFE04CCCECC7C0000F0F024291CCC57F4127C7700FF0055FF001FFF00F8FF00772C000000001000100000044750C84989BDE26A62B2F61B311020195A400A60E765AC961704F035D41E50D0DACD060580A4E68BA17C02D88B65142645380D60502C9AA4C4688BA36D5905D4B0985A5399CFB508003B" strDOC = "47494638376110001000B3040004060484868404FEFCC4C6C4FCFEFCCCCECC5C00137C0000F0F024291CCC57F4127C7700FF0055FF001FFF00F8FF00772C000000001000100000045290C840AB9598849C039040288EDFF601428AA22A31BA4218AF433110C519ABF18D1303DD2E86BB1985ACCFE056009E429E4FD186936A389C206663EBD68E5B6C463BE178AB61B184AC59BADF4B6B94448A00003B" strEML = "47494638396110001000B30000040604848684C4C6C4FCFEFCCCCECC1F00065C00137C0000F0F024291CCC57F4127C7700FF0055FF001FFF00F8FF007721F90400000000002C000000001000100003043C70C849ABBD38E7C0B90E03110E00060A038A9615288AA8C84A6E3AC6E4E4BDA318CCA0602798A31929A0E28068010193979F4EA30458AFD82BD51201003B" strEXE = "47494638396110001000B30000040604848684C4C6C4FCFEFCCCCECC0406BCC4C6CC7C0000F0F024291CCC57F4127C7700FF0055FF001FFF00F8FF007721F90400000000002C000000001000100003043B70C849ABBD34E8CDBB1606181A2328044060146CEBB26820BCC500D8764C787C2A609914013889FD88031D32E95B2A9146678AD70358AFD82C2002003B" strFILM = "47494638396110001000B30000FC3204CCFECC0486D4FCFEFC3C9B0002000032080000000011000001000000130000000001060000000000000000000021F90400000000002C000000001000100003044310C849E5B803E46A35D65C876DE1348261769295FA55411C48422DA0D24C03F570B3B39820D0BBC10031A44D30622E87C5A66F288B629E58E6758AF549B3CE26D81601003B" strFIREFOX = "47494638396110001000B30000C43C12F3AE422E9CE9C0DBFA52637A92A0BDB0652C8DB0E1F8FBFC3C5664AE9C776283B26A6762FCC66C848A80F4862421F90400000000002C000000001000100003046BF0C83919BAF8E02D2DDF9820121F780DC7E2211A9A2E8E32CCAB56348A7314813CD4084520401009691984E16120106001E445C3783013849E9435280098D580635B400C080080C1C098FD300577C1B9701F5675B77E7687EFF77D170B143B0586862B080C8B8C8D8B1811003B" strFLD = "47494638396110001000B300000406049C9E04FCCE9CFCFEFCFCFE9CCCCE64FCFECC7C0000F0F024291CCC57F4127C7700FF0055FF001FFF00F8FF007721F90400000000002C000000001000100003044970C849ABBD38D7C039C8C1601804117C5650AC6CD1755230CEF448149F5CEE3C21E0035DCF47040A87029F91C44B3A6F396693F88BEE9ECE6AD080A50AB4AA9698850298CF68F42002003B" strFLOPPY = "47494638396110001000B30000040204848684C4C6C4FCFEFC7A9B0002000028080000000011000001000000130000000001060000000000000000000021F90400000000002C000000001000100003043F10C849EB00028CCDB90601A675DD146664999D637AADA2BB89ACFC82B14C8B55050BC0A0308823F6243F2066C54A66948166510995868EC7C020CAED7A0311003B" strFORM = "47494638396110001000B3000004020484868404FEFCC4C6C4FCFEFC0100001E080000000011000C01000000130000000001060000000000000000000021F90400000000002C000000001000100003042F90C849ABBD38EB0CFA968020741E468A226901C44086E35AB925C55EB76DCA785091835F60B8021200448DEA938900003B" strGRAPH = "47494638396110001000B300000402040486040402FCC4C6C4FC0204FC02FCFCFEFC00000011000001000000130000000001060000000000000000000021F90400000000002C0000000010001000030452D0006306B5F552A9B3C700308C836092289799C2B74DAB9905B42412384BD28135E104D6ACC601B20A489E6D6034210B3C9FA129782A8B3967B2166266ABDB1E36A885127F5F2B37C46EBB27B038456E8800003B" strHLP = "47494638396110001000B30000040604CC9E348486848F0689C8CAC8CC66CCCC06CC9C6234FC9EFCFCFE04640664FCFEFCFCCE34A1A39A646664E4E2D421F90400000000002C000000001000100003046270C9B906A0980E64D4CDD3668C83078AC6712843F949682207ACF5A1A3C1242C30C09C9C8C71B0387EB804B1656C5898A40109E068089E0D422BD7745E068D07C1D90208B216D8A0F0106B1BE8D742C162B7095AF984BE16A741127C7F807B7A1211003B" strIE = "47494638376110001000B30D002640604CB0ED99D8F62D88C68CAAD43196E8CCE4FA606F7BB3CBF755588951C9F7649CC553709FFBFDFC80F2FC608AB62C0000000010001000000483B049422B7D324F9DDFE20D211906653C48C1118BF760012363D2EB384AF00546833C8786C710180C0A019A8F11C42C0688C6205078F4104C67314045A20CD8E042514898CF0C0498B91030CA6A12498D481C1E85771E611C1CE6762A037A01020A000480072C0D65008F0708926076211492986060754112679FA09D1207A4A5A6A411003B" strINI = "47494638376110001000B30400040604BCBE04848684C4C6C4FCFEFCFCFE04CCCECC7C0000F0F024291CCC57F4127C7700FF0055FF001FFF00F8FF00772C000000001000100000044B9010302BA5325341B8AF197759A4C465A834605D9A1AEC09CC13B6862E7A9BD2ECDBB1D4206090C0703543A010A0EC5A9925804978CA004AA6338802348DDC5C3536289BCFCFDA6F8D8A00003B" strINSTALL = "47494638396110001000B3000004020476A9652E969432EEACC1CAB95C7A208B9290A1B3B140FE04DCFE044B494BF3F6F47CFE7C69707244E9E720272521F90400000000002C000000001000100003047A70C9F988BDC48039D509C27184C7C62D5E70486279A2DFBAB4E652119E4092E663180AC5AC7520941A1620EE35DBFC149647704A5D1016485C40F5B3A0AC58E36090B81A1EC807B871308C19C307C0B4621F1C8386E7209CD4DB220A050E0E0D1C75067604085187580F0F2B04090801350B733D0D0105721C11003B" strISO = "47494638376110001000B30600040604048604349E9C64CEA8D9DBD9848785FBFDFBB4CE9CAEB0AE04FE04747674CCCE64343634649ECCC8CAC81C9ECC2C000000001000100000046CD0C849AB9D2A5F9ACF72DAA5088387380E6329C3401E0E42202A553C4D5BC8712D293B5201B0E3F91488D3D04044A53013C470277916AEC5644140201854054C5276183C0C3443D8893C1D0E8F07401266D81957C7DB3E571B1201552976207D405888887D4C008D8E8F8B11003B" strJAVA = "47494638396110001000B30000FC0204FCFEFC040284770000469BD80200AF34081600000011000001000000130000000001060000000000000000000021F90400000000002C000000001000100003043830C80068A533E37CF5AEA037855227866626ACEC1AB093F05E972CD9782BE3B7ADF1B1D76B77FBF962C7A0C7A5D4317DC99F31C914E94411003B" strMDB = "47494638376110001000B30400040604848604848684C4C6C4FCFEFCFCFE04CCCECC7C0000F0F024291CCC57F4127C7700FF0055FF001FFF00F8FF00772C0000000010001000000459904841AB9598889C05C080F7711AF101451A0043DB9A402C14286D0CB7810D7190D299C14E1608CC46049D84070B1D5D2F03D223F0B17204E6C454450AB5259832999D2E3942296693C4B9756036693985DA5BD3987EAF8F00003B" strMID = "47494638396110001000B30000040604848684C4C6C4FCFEFCD4D6CC1F00065C00137C0000F0F024291CCC57F4127C7700FF0055FF001FFF00F8FF007721F90400000000002C000000001000100003044130C84987BDE1EA41B2F6DB200C207901C089A616B8B222EC0EE825C8A705DF584E5F041C8DB5C3AD743623B1D853C1824D1D2C160D515B82AC76CB93BEBE354B04003B" strMP3 = "47494638396110001000B300009C6634FCCE34CCCE9CDCDEDCCC9E9C9C9E34FCFE9CB79E64C4C6C4FCFEFCFCCE64FC9E34ECD6C4ECEEECFCCE9CCC9E3421F90400000000002C000000001000100003044E3049D9A6BD1308CCD9031CC61CCF115AA3F220A7E4290AD87A8FB298A70700811CEA09C083C0391C0A9F04096739380C8E2469D384C21E85A06F52BB96949C4240F5199C488F0FF52430325A8908003B" strMPLAYER = "47494638376110001000B306000406040486048486840406FCFC0604FCFE04FCFEFC7C0000F0F024291CCC57F4127C7700FF0055FF001FFF00F8FF00772C000000001000100000044DD0C83985A5D8582141D697018C1C158EDE2714C5F851000B08734D979AA87BBC98D2BB604D827B017306C2642009687EC92893E93C969412A6A10A552A07E0ED93F8AAFC36E874CA876AB72511003B" strPDB = "47494638396110001000B30000040604048604048684C4C6C4FCFEFCFC0604848684CCCECCF0F024291CCC57F4127C7700FF0055FF001FFF00F8FF007721F90400000000002C000000001000100003045190C849AB1D38E37381FFDE400D450104680A8812599E29BAB62506C700471CF570163896AB4404CA58BB625120984D86C466533739F8040526D3390281904F80C1E01973C35E0FB59A0E5DACF0015C1201003B" strPDF = "47494638376110001000B30600131513979891DBD6DA545654C1B7B98C0A0CF8F9F8E55452C4C6CBFC3036343234777877FC6E6CEF0907E69290F8B0AE2C0000000010001000000471D0C8456B957822447A08828231CC612668D2049268306823CFC58289F0AC174115288D827038346C08080066214008040781E1E9544EA6D203A669B01A6C5241C2B1ED2E4706C74322F5DAA687C7C37420BB2571A984C0305FEB1953554B245B4F4D027781878312030A90910A00949411003B" strPHP = "47494638396110001000B300000402049C9ECCD4D6D47700009437B00201550701E100007711009401000200130700000001068200000000000000000021F90400000000002C000000001000100003043230C849ABBD3863C1F51480907122D805A40402E1DAB2AD69BE323D73A14DEF38CEF6B31F50A592A94217D3E75449799E9E08003B" strPPT = "47494638396110001000B30000040604848684C4C6C4ECEEEC840684D4D6CC545654FCFEFCE4E2D40406FC840204747674DCD6DCCCCECCF4F2F4FF007721F90400000000002C0000000010001000030464F09C15AABD554ECDB9D18B208EA4F0490BA0AE2C706E402701CDBB1CB1A20F0741DBB803E2C038247C3550508748009040008241ADFE942D5612A5190800828303B1DD880F014000C12E001D87AF9C5D5E0C1C0330594AB635FE80817506848586840711003B" strPRC = "47494638396110001000B30000040204FCFEFC0402FCFC0204609BAB0400380408E100007711006001000400130400000001068200000000000000000021F90400000000002C000000001000100003044430483980053353AB85D0951678DE144E9F6795C1299158007CEE2BC4F25D8F240AECA2D10F177C0D4D839DCE95240A5BB126F146A93465196A15A835396FCECC85938900003B" strPS = "47494638396110001000B30000040604848684C4C6C4FCFEFCFC0604D4D6CC5C00137C0000F0F024291CCC57F4127C7700FF0055FF001FFF00F8FF007721F90400000000002C000000001000100003044A30C84987BDE1EA21B2F6407815836781963801D8C5A696F09616610F36C1CD995E5F04594BC722E284271C1088A4E16EB95D6B3083353355D795BA496DBB97AB604C2E3743E874FA1201003B" strREAL = "47494638396110001000B300002C1E54779EACC4DEC4495E54719EFC4C5EACACBEAC82BEFC8486842C3EACD4DEFCFCFEFC5A7EAC2C3E54A9A1A9A4CEF421F90400000000002C000000001000100003047370C949AB2D81E96065F801113208523DCF7188C11106C574A48C717ECD821E83B3140C0150B1203006A8406E3168301A03A2E0892234048B462246D43D038F404F010070240A462197823904DD85413D90185A2384C0A129D427190C217C1A4B151918464F1D130C46868C454A911408901511003B" strREG = "47494638396110001000B3000004020404868404FEFCC4C6C4848684FCFEFC28080000000011007501000100130000000001060000000000000000000021F90400000000002C000000001000100003044EB04842AB95B8909CC7CE1F570C1A284A400A6056D5AD5A1014820C4BC34A080530DBAF5D21E0B3DD46804D4DE53BE608B65F33C80B54A798276DB63C22994C518E75CADE0883B47A3D4681DF8008003B" strSLN = "47494638396110001000B3000004060404860484868404068404FE04840604C4C6C48486040406FCFCFE04FCFEFCFC0604FF0055FF001FFF00F8FF007721F90400000000002C000000001000100003046150C949AB1A38EB3CB7C793401913690061652A242A896C199FA9B4AEAE02DB33BBEF01C0215600E460010220812A2C1008972849082412CEC2008A12189201C5218BDAA200020062A0202714C99C3ABA285E010425450D288A997A154672461311003B" strSNP = "47494638396110001000B30000040604848684D45E54840604FC3E54C4C6C4D40604D4BEACEF1E04FCFEFCFC7EACDE9EACAC1E04AC0604FC0604FCBEAC21F90400000000002C000000001000100003045A30C84993BDE1EA54B2F61B978063A8010066390E811857915A99B3688D25AB4ED23F89C580332B21143E856130DCD11288C743F1B8358B19584270483074584BE3E61D125516A6198C369D9FEEF7A840AFDB9D09947EBFBF4400003B" strSQL = "47494638376110001000B30300040604848684CCCECCFCFEFC4400881F00065C00137C0000F0F024291CCC57F4127C7700FF0055FF001FFF00F8FF00772C000000001000100000043C30C82987BD36E0ACF7E858208097467DD346AA2C95AE6BE80D0030D580555F7BDEFB395D900624F276C61F06972C2E8B4A5D737A3C0671430FF21201003B" strSWF = "47494638396110001000B300000426448196A3CCD2D8145E84A9B8C3FAFCFB627D8E39566DDFE2E50436539CA6BC52667AB9C6D171869994A6AC0C3E6421F90400000000002C000000001000100003047CB048B98E3D6BEA525B2044D060DB611002A20A84621CD362A4930000076364C5414F89C7608060C064AA4940185021768B9F043038A054461F62C2003C1E09A7C022F526CE8515590C4818244E6354406F27084E1521E333D8DF7963142E09000D0529490D3C1C0E7949058B1B010B5B13080B011B138B0B9E871A11003B" strSXC = "47494638396110001000B30000040604848684C4C6C4040684E4E6D4545654D4D6D40406FCECEEEC840684747674FCFEFCCCCECCFF001FFF00F8FF007721F90400000000002C0000000010001000030459508549EB5C58E1CD71D99A2032E2C87CD9C24C42259CE05292F48B2EDA1A089C60DCA1D16B084BE9781B1F5036130D6CB12326F12CE264241180CAB086588703156AA499C938849A4040B0D93F50774EEF020BF8BC1EBF8900003B" strSXD = "47494638396110001000B3000004060404860484868404FEFCCACCCAE4E6D4040684ECEEEC545654FCFE040406FCB5B7B5848604747674D4D6D4FCFEFB21F90400000000002C0000000010001000030467B08949EB7CB8E1CD31DA1AB08CE20214C4973DCB90B8EE520800C8BE43CE0A0FBFB6AF04C6A0A0D916B8A1C200F03D422E2533751C484FD41F269160CAB24FD69651FBAAC28B478211C0986D251309756E1C1E8742E1A1D73BEA04818283600D08878889871B11003B" strSXM = "47494638396110001000B30000040604848684CCCECCECEEEC545654FCFEF4747674E4E6D4F4F6F45C5E5CFCFEFC7C7700FF0055FF001FFF00F8FF007721F90400000000002C000000001000100003045AD08449EB54D8E0CD31D99A208EA2227C1956AC6C61A28A5600740D1C27A8D205A200855C4AB1E22110389886A840D00648618CD87B160E495DD3EAC42574331B2D3BF41D0F48F29444521BA0036C1A2B35B0EF4A827ECFD76F22003B" strSXW = "47494638396110001000B30000545654CCCECCECEEEC747674FCFEF43436CC5C5E5CE4E6D4F4F6F4848684FCFEFC7C7700FF0055FF001FFF00F8FF007721F90400000000002C000000001000100003045570A449EB5478E0CD31D81AA11024019CC19761E2F60129A814348D9CB0AA681C82098AD8AA46A409771B9F4220381C8E9AA2EDA9E3FD1488E6D32093D6A057E601E10417C9E5AA20EB44A74181B87C0EC5D9EF9B08003B" strTTF = "47494638396110001000B30000040604848684C4C6C40406FCFCFEFC1F00065C00137C0000F0F024291CCC57F4127C7700FF0055FF001FFF00F8FF007721F90400000000002C000000001000100003044930C84989BDE16A22B2F61B478063680128808DD525A8561674B40B975C30EC3B77833AC1402878AD629C21C788646594BEA306CAC45D78962A295B8C364DDE51714C2EDE52E8F42D02003B" strTEXT = "47494638396110001000B30000040204848684C4C6C4FCFEFCE89B0001000029080000000011000001000000130000000001060000000000000000000021F90400000000002C000000001000100003043E700C302BA532D330B8AF197759A4C465A824605D9AAEA104CC13069B2E7AB7F54C0FBB530EC83AF97CAAE23019EB2189CD6170093509AED8ECCE797C4A22003B" strTXT = "47494638376110001000B3050004060404868404FEFCC4C6C4848684FCFEFC5C00137C0000F0F024291CCC57F4127C7700FF0055FF001FFF00F8FF00772C000000001000100000044CB04809AAB573021202F741950142699AC0004C81D0BD6DA85225DC0AE95CDC679DAFA41E6A405CF17AB262508823168FA7644175A9E69C2B8D738B1D7189121DE5BBCD8EC903829962C54400003B" strUP = "47494638396110001000B30000040204848684FCFEFC770000EE9BD001001F1D081600000011000001000000130000000001060000000000000000000021F90400000000002C0000000010001000030431504809A6BD54547C2BF8DCE47D203792A585AEA9AA7D4198A1B17CD6E1B9D92F809B3D9F4C131C064946D68E13683A0311003B" strVBP = "47494638376110001000B30600040604FCFE0484868404FEFCC4C6C4FC0604FCFEFC7C0000F0F024291CCC57F4127C7700FF0055FF001FFF00F8FF00772C0000000010001000000448D0C849AB04C0D27C07D640C06183C74D986864E4897EE367C5ABB9B92B6903858CE6A69E0F736AC9040041EE554AAE94AF1501E9B938254896086AC872AD2A8AB79B246AC6174904003B" strVBS = "47494638396110001000B3000004060404868404FEFCC4C6C4FCFEFC848684CCCECC7C0000F0F024291CCC57F4127C7700FF0055FF001FFF00F8FF007721F90400000000002C0000000010001000030455B0C8492B2824E7AAC7D5442110A39779D846042C0A10A84AC297697CE1CA02FC4BA7A2D90D14DB085801D3096714FA6EA99004C0A2FD542E922986115C460265B130181400651F01AAE9F588B5B27C3E77DBEFBC08003B" strVCF = "47494638396110001000B3000004060464A664BFC0BF444644A9ABA9FCFEFCBCDEBC646664242624ACCEAC7CBE7C7C7E7CDCDEDC5456543436346CAE6C21F90400000000002C000000001000100003044CB0C849ABBD38EB8C84FF20D86DD32124C1A30481F20495494AA6A1DC4A61E37921CF359C41C7BBF9043B631277A4309C945F41302048A8569A60C2702C240440B471281F108E7203603E3822003B" strVCS = "47494638376110001000B30A000406043CBE7C04FE7C045E04648664606260A0A2A07D7D7DCACCCA242624FBFDFB414941B6B8B6858785DCDEDC3537352C0000000010001000000472109C536A1D0BA8BD016B6048341AA7004620AC2C699E29DB961CAACA826BDA784E77315CE15129F164810683E1503C603756E16040300A2794C1B0BC720D8544F3A0DD6E0B0C04A2B17190CD5D74D354403D4005D0D3C400A01A0B070B0D440F084D06460B8379050B097E7E2F5992930A11003B" strVDP = "47494638376110001000B3060004060404860404868404FEFC040684C4C6C4FCFEFC84060404FE040406FC848684CCCECCFF0055FF001FFF00F8FF00772C0000000010001000000464D048736A95696A3ACFFE9E146260F719411A544AEBBAE81418CA09C4D25C033C5FDCB31CCD00280C0C821F4A1520EC8E82E44DB388269182847252100C04816461BC95241109B0A2C7D3088ACD0441B39E28128980DCF99A1A0A047B456C7E123F3E2711003B" strVS = "47494638396110001000B3000042020404AE040402FC2B440BF80204BCBEBC04087304EE04676567F8FA16B4B668FCFE7CFCFEFC30790A202919AC323421F90400000000002C000000001000100003045690C949ABBD38EBCD3B1EA02301244935C8B22824E1020620350792DC8FFB0A315DE3BA97811738381C8A5CD0641804440C40900010390E03434CBA6C24AED8A1610AF0261087866CB81CDCCEEAC9B6C440D81D324604003B" strWAV = "47494638396110001000B30000040604BCBE04848684C4C6C4FCFE04FCFEFC5C00137C0000F0F024291CCC57F4127C7700FF0055FF001FFF00F8FF007721F90400000000002C0000000010001000030450B0C85900A098060144C601010CC3378582507A135B845559B0A914C0A2ECB941511295CB0C441800731797AD58007692B3146773B44894120B6C74350142DC2136BBA15DC7DFD140890E744C186B2602003B" strWMV = "47494638396110001000B300001819188A9B12949592D1DEA4344B9EB2D0F5F8FBFB7EB5E86B6B956B6B28C6C11E8F7364FC967C3972C8F74D23DAD45C21F90400000000002C0000000010001000030474D0C8492B3D386321ECB10672741788140D297D16E2A6D3E138417014538190F3AC04899B44D799311883C72F88231A0702DC00B8F8381D0CC362D199060D4442E3B300001686DF8DD8181BCC8281E1612B14089D76212A51D6EF1D046237493F5176781282820A4B2E2E89120B8209951C971C11003B" strWRI = "47494638396110001000B30000040604848604848684040684C4C6C4FCFE040406FCFCFEFCF0F024291CCC57F4127C7700FF0055FF001FFF00F8FF007721F90400000000002C000000001000100003044E50C8498FBDE2EA43F21DDEC61DDE60841BA00226296A047B9CEF150306585BC1AAD781424F85D2040F0101C075505D8E438B67B91CAE3016D5CDB694662F5D4E78FA8A6108E8B4DA9C5DB9DF9708003B" strWSC = "47494638376110001000B3070004060484860404868404FEFCC4C6C4FCFE04848684FCFEFCF0F024291CCC57F4127C7700FF0055FF001FFF00F8FF00772C0000000010001000000456F0C8398DB5341F334E27802619876082469891DE81821A690A40ADAEDD778BDC0C538160609373A982800220504B998C8740613A6502521E50B0C094DA7230A93255AD117EDBAED2560352CBBBC932398F67D8224904003B" strXLS = "47494638376110001000B3040004060404868404FEFCC4C6C4FCFEFC848684CCCECC7C0000F0F024291CCC57F4127C7700FF0055FF001FFF00F8FF00772C000000001000100000045490C842AB9598949C0B9040088AD8F6018210A61F168AA8EA0DB43118C470C62F30483F1D2010E0156FB75C6FA5F201098696A667AB2A4BD0EC0FA3C3D292125C77A27DFEA25EAB75ACE170D885AF5C2EF52CEF11003B" strXML = "47494638396110001000B30000040604349E0404868434CEFCC8CAC8F4F4F804068434669CFCFEFC349EFC0406FC3466FC34FEFC848684A4CEF404069C21F90400000000002C000000001000100003045FB0C94925BAA8E18D89BE1F771544068E2202AC80593897202CC85BA8A6F32002C22406C4C35168357431C62060B80D8D08E4221150048745170C61E85E88B8506D8C0AD70EE874FA06C5DCCA1768414D679B521CF9F8C61FB75880812C0811003B" strZIP = "47494638376110001000B30B00040604DC96040492DC04DEDCFCD68C8CD6FCFCC262046694FC06040436546CC6FCFCFDF9FCFE8C6C8EFCFCAE14FCE2B42C000000001000100000045E70C909AA4D73A1BDC011C230280DA631849158EC51605B2C73400168D9933ACE5DDF884CCAE008F86C38898E18307690C1C5D2D074FE920F03B379044A77552B9445AEB84C190F484442673A64F73B2D98BF3D0001FE605F1CF07A7F0B11003B" 'Dictionary of what file extensions use which icon Set dic = CreateObject("Scripting.Dictionary") For Each strFileExtension In Split("cda") : dic.Add strFileExtension, "AUDIOCD" : Next For Each strFileExtension In Split("") : dic.Add strFileExtension, "AVI" : Next For Each strFileExtension In Split("") : dic.Add strFileExtension, "BARCODE" : Next For Each strFileExtension In Split("bas") : dic.Add strFileExtension, "BAS" : Next For Each strFileExtension In Split("bat cmd") : dic.Add strFileExtension, "BAT" : Next For Each strFileExtension In Split("art bmp gif jpg jpeg dib pgm pcx pbm tiff tif png ppm") : dic.Add strFileExtension, "BMP" : Next For Each strFileExtension In Split("") : dic.Add strFileExtension, "CD" : Next For Each strFileExtension In Split("") : dic.Add strFileExtension, "CDR" : Next For Each strFileExtension In Split("chm") : dic.Add strFileExtension, "CHM" : Next For Each strFileExtension In Split("class jar") : dic.Add strFileExtension, "CLASS" : Next For Each strFileExtension In Split("dll ocx") : dic.Add strFileExtension, "DLL" : Next For Each strFileExtension In Split("doc dot wbk") : dic.Add strFileExtension, "DOC" : Next For Each strFileExtension In Split("eml nws") : dic.Add strFileExtension, "EML" : Next For Each strFileExtension In Split("com exe scr") : dic.Add strFileExtension, "EXE" : Next For Each strFileExtension In Split("mpg mpe mpeg mp2 spl mov qt") : dic.Add strFileExtension, "FILM" : Next For Each strFileExtension In Split("htm html url") : dic.Add strFileExtension, "FIREFOX" : Next For Each strFileExtension In Split("") : dic.Add strFileExtension, "FLD" : Next For Each strFileExtension In Split("") : dic.Add strFileExtension, "FLOPPY" : Next For Each strFileExtension In Split("frm") : dic.Add strFileExtension, "FORM" : Next For Each strFileExtension In Split("") : dic.Add strFileExtension, "GRAPH" : Next For Each strFileExtension In Split("hlp") : dic.Add strFileExtension, "HLP" : Next For Each strFileExtension In Split("hta mht mhtm mhtml") : dic.Add strFileExtension, "IE" : Next For Each strFileExtension In Split("cfg log ini") : dic.Add strFileExtension, "INI" : Next For Each strFileExtension In Split("") : dic.Add strFileExtension, "INSTALL" : Next For Each strFileExtension In Split("iso cdj cue bin ccd cif nrg") : dic.Add strFileExtension, "ISO" : Next For Each strFileExtension In Split("java") : dic.Add strFileExtension, "JAVA" : Next For Each strFileExtension In Split("mda mdb mde") : dic.Add strFileExtension, "MDB" : Next For Each strFileExtension In Split("mid midi rmi") : dic.Add strFileExtension, "MID" : Next For Each strFileExtension In Split("mp3 m3u") : dic.Add strFileExtension, "MP3" : Next For Each strFileExtension In Split("avi") : dic.Add strFileExtension, "MPLAYER" : Next For Each strFileExtension In Split("pdb prc") : dic.Add strFileExtension, "PDB" : Next For Each strFileExtension In Split("pdf") : dic.Add strFileExtension, "PDF" : Next For Each strFileExtension In Split("php") : dic.Add strFileExtension, "PHP" : Next For Each strFileExtension In Split("ppt pot ppa") : dic.Add strFileExtension, "PPT" : Next For Each strFileExtension In Split("pqa") : dic.Add strFileExtension, "PRC" : Next For Each strFileExtension In Split("prn ps") : dic.Add strFileExtension, "PS" : Next For Each strFileExtension In Split("ra rmv rv rm") : dic.Add strFileExtension, "REAL" : Next For Each strFileExtension In Split("reg") : dic.Add strFileExtension, "REG" : Next For Each strFileExtension In Split("c h inc cpp") : dic.Add strFileExtension, "SLN" : Next For Each strFileExtension In Split("snippet") : dic.Add strFileExtension, "SNP" : Next For Each strFileExtension In Split("sql") : dic.Add strFileExtension, "SQL" : Next For Each strFileExtension In Split("swf") : dic.Add strFileExtension, "SWF" : Next For Each strFileExtension In Split("sxc") : dic.Add strFileExtension, "SXC" : Next For Each strFileExtension In Split("sxd") : dic.Add strFileExtension, "SXD" : Next For Each strFileExtension In Split("sxm") : dic.Add strFileExtension, "SXM" : Next For Each strFileExtension In Split("oxt sxw") : dic.Add strFileExtension, "SXW" : Next For Each strFileExtension In Split("fot ttf") : dic.Add strFileExtension, "TTF" : Next For Each strFileExtension In Split("abw awt") : dic.Add strFileExtension, "TEXT" : Next For Each strFileExtension In Split("txt me") : dic.Add strFileExtension, "TXT" : Next For Each strFileExtension In Split("") : dic.Add strFileExtension, "UP" : Next For Each strFileExtension In Split("vbp") : dic.Add strFileExtension, "VBP" : Next For Each strFileExtension In Split("vbe vbs js jse") : dic.Add strFileExtension, "VBS" : Next For Each strFileExtension In Split("vcf") : dic.Add strFileExtension, "VCF" : Next For Each strFileExtension In Split("vcs") : dic.Add strFileExtension, "VCS" : Next For Each strFileExtension In Split("vdp") : dic.Add strFileExtension, "VDP" : Next For Each strFileExtension In Split("asp pl") : dic.Add strFileExtension, "VS" : Next For Each strFileExtension In Split("au snd aif wav") : dic.Add strFileExtension, "WAV" : Next For Each strFileExtension In Split("asf asx wm wma wmv wmf") : dic.Add strFileExtension, "WMV" : Next For Each strFileExtension In Split("rtf wri") : dic.Add strFileExtension, "WRI" : Next For Each strFileExtension In Split("ws wsc wsf wsh") : dic.Add strFileExtension, "WSC" : Next For Each strFileExtension In Split("xlb xlc xls xlv dif slk tab csv") : dic.Add strFileExtension, "XLS" : Next For Each strFileExtension In Split("smi css xml xsl smil") : dic.Add strFileExtension, "XML" : Next For Each strFileExtension In Split("b64 tar z cab lzh gz zip arj arc mim") : dic.Add strFileExtension, "ZIP" : Next 'Read the directory, stuff name, size, and date into arrays Set fols = fs.GetFolder(strDirectory).SubFolders For each fol in fols On Error Resume Next Err.Clear ReDim Preserve strFolderInfo(UBound(strFolderInfo) + 1) If Err Then ReDim strFolderInfo(0) strFolderInfo(UBound(strFolderInfo)) = fol.Name & vbTab & fol.Size & vbTab & fol.DateLastModified Next Set fils = fs.GetFolder(strDirectory).Files For each fil in fils 'Check to be sure I'm not indexing one of my index files! blnGoodFile = True If fil.Name = INDEX_FILE Then blnGoodFile = False If Left(fil.Name, Len(GRAPHIC_PREFIX)) = GRAPHIC_PREFIX Then If Right(fil.Name, 4) = ".gif" Then blnGoodFile = False End If End If If blnGoodFile Then On Error Resume Next Err.Clear ReDim Preserve strFileInfo(UBound(strFileInfo) + 1) If Err Then ReDim strFileInfo(0) strFileInfo(UBound(strFileInfo)) = fil.Name & vbTab & fil.Size & vbTab & fil.DateLastModified End If Next 'Sort both arrays by name SortAscending strFolderInfo, vbTab, 0 SortAscending strFileInfo, vbTab, 0 'Generate the web page strIndex = "" & vbCrLf strIndex = strIndex & "" & vbCrLf strIndex = strIndex & "" & vbCrLf strIndex = strIndex & "" & vbCrLf 'Insert the header (if any) strIndex = strIndex & File2String(HEADER_FILE) & vbCrLf 'Start the file list table strIndex = strIndex & "" & vbCrLf 'Add the usual "Parent Directory" link If MAKE_PARENT_LINK Then strIconFile = DISK_GRAPHIC_PATH & GRAPHIC_PREFIX & "up.gif" If InStr(strIconFile, "\\") <> 1 Then If InStr(strIconFile, ":") <> 2 Then strIconFile = fs.GetAbsolutePathName(fs.BuildPath(strDirectory, strIconFile)) End If End If If WEB_GRAPHIC_PATH = "" Then strIconLink = RelativePath(strDirectory, strIconFile) Else strIconLink = WEB_GRAPHIC_PATH & GRAPHIC_PREFIX & "up.gif" End If strIconHexData = strUP 'Write the parent directory icon file to disk if needed If Not fs.FileExists(strIconFile) Then Hex2File strIconHexData, strIconFile strIndex = strIndex & " " & vbCrLf End If For intCounter = LBound(strFolderInfo) To UBound(strFolderInfo) 'Figure out all the FOLDER names we'll need strFileName = Split(strFolderInfo(intCounter), vbTab)(0) If strFileName <> "" Then 'Don't generate output if there are no folders! strFileLink = Replace(strFileName, " ", "%20") strIconFile = DISK_GRAPHIC_PATH & GRAPHIC_PREFIX & "fld.gif" If InStr(strIconFile, "\\") <> 1 Then If InStr(strIconFile, ":") <> 2 Then strIconFile = fs.GetAbsolutePathName(fs.BuildPath(strDirectory, strIconFile)) End If End If If WEB_GRAPHIC_PATH = "" Then strIconLink = RelativePath(strDirectory, strIconFile) Else strIconLink = WEB_GRAPHIC_PATH & GRAPHIC_PREFIX & "fld.gif" End If strIconHexData = strFLD strFileSize = Split(strFolderInfo(intCounter), vbTab)(1) strFileModified = Split(strFolderInfo(intCounter), vbTab)(2) 'Write the icon file to disk if needed If Not fs.FileExists(strIconFile) Then Hex2File strIconHexData, strIconFile 'Add a line to the web page strIndex = strIndex & " " & vbCrLf End If Next For intCounter = LBound(strFileInfo) To UBound(strFileInfo) 'Figure out all the FILE names we'll need strFileName = Split(strFileInfo(intCounter), vbTab)(0) strFileLink = Replace(strFileName, " ", "%20") strFileSize = Split(strFileInfo(intCounter), vbTab)(1) strFileModified = Split(strFileInfo(intCounter), vbTab)(2) 'Figure out what icon to use strFileExtension = Lcase(Mid(strFileName, InStrRev(strFileName, ".") + 1)) If dic.Exists(strFileExtension) Then strStringName = Ucase(dic(strFileExtension)) Else strStringName = "000" End If strIconFile = DISK_GRAPHIC_PATH & GRAPHIC_PREFIX & LCase(strStringName) & ".gif" If InStr(strIconFile, "\\") <> 1 Then If InStr(strIconFile, ":") <> 2 Then strIconFile = fs.GetAbsolutePathName(fs.BuildPath(strDirectory, strIconFile)) End If End If If WEB_GRAPHIC_PATH = "" Then strIconLink = RelativePath(strDirectory, strIconFile) Else strIconLink = WEB_GRAPHIC_PATH & GRAPHIC_PREFIX & LCase(strStringName) & ".gif" End If strStringName = "str" & Ucase(strStringName) strIconHexData = Eval(strStringName) 'Write the icon file to disk if needed If Not fs.FileExists(strIconFile) Then Hex2File strIconHexData, strIconFile 'Add a line to the web page strIndex = strIndex & " " & vbCrLf Next strIndex = strIndex & "
 Parent Directory  
 " & strFileName & "" & strFileSize _ & "  " & strFileModified & "
 " & strFileName & "" & strFileSize _ & "  " & strFileModified & "
" & vbCrLf 'Insert the footer (if any) strIndex = strIndex & File2String(FOOTER_FILE) & vbCrLf 'Close the html strIndex = strIndex & "" String2File strIndex, fs.GetAbsolutePathName(fs.BuildPath(strDirectory, INDEX_FILE)) Sub SortAscending(strArray, strSplitCharacter, intSortByElement) 'Sorts a single-dimension array whose data elements are delimited text. Dim blnChanged 'As Boolean Dim strBuffer 'As String Dim intCounter 'As Integer If LBound(strArray) = UBound(strArray) Then Exit Sub blnChanged = True Do Until Not blnChanged blnChanged = False For intCounter = Lbound(strArray) + 1 to Ubound(strArray) If Lcase(Split(strArray(intCounter -1), strSplitCharacter)(intSortByElement)) > Lcase(Split(strArray(intCounter), strSplitCharacter)(intSortByElement)) Then blnChanged = True strBuffer = strArray(intCounter -1) strArray(intCounter -1) = strArray(intCounter) strArray(intCounter) = strBuffer End If Next Loop End Sub Sub Hex2File(strHexData, strFileName) 'Converts hex data to binary and appends it to a file Dim fs 'As Scripting.FileSystemObject Dim ts 'As Scripting.TextStream Dim intCount, strBuffer Const ForAppending = 8 On Error Resume Next Set fs = CreateObject("Scripting.FileSystemObject") Set ts = fs.OpenTextFile(strFileName, ForAppending, True) For intCount = 1 To Len(strHexData) Step 2 strBuffer = strBuffer & Chr(Clng("&H" & Mid(strHexData, intCount, 2))) Next ts.Write strBuffer ts.Close End Sub Sub String2File(strData, strFileName) 'Writes a string to a file Dim fs 'As Scripting.FileSystemObject Dim ts 'As Scripting.TextStream Const ForWriting = 2 Set fs = CreateObject("Scripting.FileSystemObject") Set ts = fs.OpenTextFile(strFileName, ForWriting, True) ts.Write(strData) 'Clean up ts.Close Set ts = Nothing Set fs = Nothing End Sub Function File2String(strFile) 'As String Dim fs 'As Scripting.FileSystemObject Dim ts 'As Scripting.TextStream Const ForReading = 1 Set fs = CreateObject("Scripting.FileSystemObject") If fs.FileExists(strFile) Then Set ts = fs.OpenTextFile(strFile, ForReading, True) If ts.AtEndOfStream Then File2String ="" Else File2String = ts.ReadAll End If ts.Close Else File2String = "" End If End Function Function RelativePath(strFrom, strTo) 'Returns a string containing a URL-relative path 'between the two folders or files. For example, if 'strFrom was "C:\a\b\c\d\e" and strTo was "C:\a\b\x\y", 'then the result would be "../../../x/y/" Dim intEnd, intCount Dim strFromPath, strToPath, strRelativePath Dim fs 'Check for trivial input If strTo = "" Or strTo = "./" Or strTo = ".\" Then RelativePath = strFrom Exit Function End If Set fs = CreateObject("Scripting.FileSystemObject") 'Preserve input variables strFromPath = strFrom strToPath = strTo 'Append a slash to folders (assuming we are doing local stuff) If Right(strFromPath, 1) <> "\" Then If fs.FolderExists(strFromPath) Then strFromPath = strFromPath & "\" End If If Right(strToPath, 1) <> "\" Then If fs.FolderExists(strToPath) Then strToPath = strToPath & "\" End If 'To see how much the paths have in common, we see which is shortest If Len(strFromPath) > Len(strToPath) Then intEnd = Len(strToPath) Else intEnd = Len(strFromPath) End If 'Find the common path For intCount = 1 To intEnd If Mid(strFromPath, intCount, 1) <> Mid(strToPath, intCount, 1) Then Exit For Next If intCount = 1 Then 'The first character is different: They are on different drives? Give up! RelativePath = "" Exit Function End If 'Replace the slashes strFromPath = Replace(strFromPath, "\", "/") strToPath = Replace(strToPath, "\", "/") 'Back up the common counter to the nearest slash intCount = InStrRev(Left(strToPath, intCount), "/") + 1 'Trim the paths strFromPath = Mid(strFromPath, intCount) strToPath = Mid(strToPath, intCount) 'Start with the strToPath as the base for the relative path strRelativePath = Replace(strToPath, " ", "%20") 'Walk up a level for every directory in strFromPath For intCount = 1 To Len(strFromPath) If Mid(strFromPath, intCount, 1) = "/" Then strRelativePath = "../" & strRelativePath Next RelativePath = strRelativePath End Function