Autor | Zpráva | ||
---|---|---|---|
zetrozet Profil * |
#1 · Zasláno: 28. 9. 2011, 21:27:35
Mám funkci procházející pomocí FileSystemObject soubory v zadaném adresáři lokálního počítače. Jak do funkce zapsat výběr, který vybere soubory splňující podmínku zadanou s použitím wildcard znaků. Udělat totéž pomocí *.EXE spouštěného z *.HTA (*.HTM)není problém, ale rád bych to vyřešil přímo v aplikaci.
Zde je ona funkce (zatím do *.js zapíše všechny soubory nalezené ve zvoleném adresáři): function poslat_(adr99) { var kde=''; var adr99=''; kde=this.location; var vystup, adresa0; var konc0=document.zobradr["konc"].value; var soub0=document.zobradr["nazsoub"].value; var adresa0 = ''; if (aktadr.indexOf(':')>0) adresa0 = aktadr; else adresa0 = aktdisk+aktadr; while (adresa0.indexOf("//")>0) adresa0=adresa0.replace("//","/"); while (adresa0.lastIndexOf("/")==adresa0.length-1 && adresa0.lastIndexOf(":")!=adresa0.length-2) adresa0=adresa0.substr(0,adresa0.length-1); kde=kde.toString(); pos=kde.indexOf('///'); if (pos>0) {kde=kde.substring(pos+3);} pos=kde.lastIndexOf('/'); if (pos>0) {kde=kde.substring(0,pos+1);} if (konc0!="" && soub0!="") { alert("Název souboru nebo koncovka souboru musí zůstat prázdný\nOpravte"); return false; } if (konc0=="" && soub0=="") { alert("Název souboru nebo koncovka souboru musí být vyplněn.\nOpravte"); return false; } if (adresa0=="") { alert("Adresář (složka) kde má prohledávání začít, musí být vypněn vždy.\nOpravte"); return false; } if (konc0!="") vystup='*.'+konc0; else vystup=soub0; var kde0=kde+'obrazky_v.js'; if (fso.FileExists(kde0)) { fso.DeleteFile(kde0); } var soubory0 = fso.GetFolder(adresa0); var soubory = new Enumerator(soubory0.Files); var vystup0 = ''; // alert(vystup); # "vystup"= soubory, hledané ve zvoleném adresáři (umožnit wildcard) for (; !soubory.atEnd(); soubory.moveNext()) { var vystup1 = soubory.item(); vystup2 = vystup1.Path; vystup3 = vystup1.Name; while (vystup2.indexOf('\\')>0) vystup2 = vystup2.replace('\\','/'); vystup0 = vystup0 + "\n'file:///"+vystup2+'|'+vystup3+"'+eol+"; } var souborjs = fso.CreateTextFile(kde0, true); var vystup0 = "var eol='^';\nvar nalezeno="+vystup0+"'';"; souborjs.WriteLine(vystup0); souborjs.Close(); var ws = new ActiveXObject("WScript.Shell"); ws.Run(kde+"obrazky_v.htm"); } |
||
Chamurappi Profil |
#2 · Zasláno: 28. 9. 2011, 23:34:21
Reaguji na zetrozeta:
Zdá se, že FSO v sobě žádnou nativní podporu nemá. Nezbývá asi nic jiného, než projet soubor po souboru a zkontrolovat název. Musí to být wildcardy? Nešlo by místo nich používat regulární výrazy? Asi by bylo možné napsat funkci, která pomocí regulárních výrazů převede wildcard na regulární výraz… a pak bys s tím výsledným výrazem mohl zkoušet matchnout jednotlivé názvy souborů. Ale soudě dle uvedeného kódu předpokládám, že si s regulárními výrazy asi netykáš. |
||
zetrozet Profil * |
#3 · Zasláno: 29. 9. 2011, 07:36:27
Máš pravdu, regulární výrazy jsou pro mne "španělská vesnice", takže potřebuji zápis podmínky do "if" písmenko po písmenku.
|
||
zetrozet Profil * |
#4 · Zasláno: 29. 9. 2011, 17:55:01
Tak jsem prolezl nejzákladnější základy a snad s tím těch pár roků do důchodu vystačím. Když mi v patnácti řekli, že "výpočetní technika" bude mít význam za třicet let, nevěřil jsem, ale měli pravdu.
|
||
Časová prodleva: 14 let
|
0