Avatar billede avminarm Juniormester
16. november 2011 - 09:29 Der er 10 kommentarer og
1 løsning

Mapper på windows maskine - sortere efter forskelligt

Hej

Jeg ved ikke om dette kan lades sig gøre?? Jeg kan lave det i PHP - men kan ikke få lov til at afvikle php på den maskine skidtet skal fungere på :-)

Jeg har en mappe struktur i en hovedmappe på en windows maskine:

12345678 - hans jensen - bynavn - andet

der er nu over 1000 mapper i hovedmappen

Jeg vil gerne liste mappene op.

gerne ud fra en søgning baseret på det der står mellem bindestregerne.

f.eks. find alle med bynavn: København

Altså en slags søgning der søger mellem de forskellige mapper ud fra angivne kriterier?

kan det lade sig gøre via javascript? eller har nogen en anden ide?
Avatar billede olebole Juniormester
16. november 2011 - 16:47 #1
<ole>

Skal der kunne søges på '12345678', 'hans jensen', 'bynavn' og 'andet' - eller kun på bynavnet? Hvad skal der præcist kunne søges på? Ikke noget 'f.eks.', please  =)

/mvh
</bole>
Avatar billede avminarm Juniormester
16. november 2011 - 20:29 #2
:-)

der skal kunne søges på '12345678' eller/og 'hans jensen' eller/og 'bynavn' eller/og 'andet'

Outputtet må gerne være klikbart så man åbner den mappe man ønsker at finde

men kan man?
Avatar billede olebole Juniormester
17. november 2011 - 12:42 #3
Det bliver et bøvlet og langsomt søgescript. Prøv at lave en mere fornuftig mappestruktur, så det bliver lidt mere realistisk at søge i
Avatar billede avminarm Juniormester
17. november 2011 - 16:57 #4
ja det ville jeg ønske jeg kunne - men det er jeg ikke herre over. Jeg er gået lidt igang med et bat fil (http://www.eksperten.dk/spm/951410) - men kan ikke lige få det sidste på plads!

nå vil du have points for din tid så smid et svar :o)
Avatar billede olebole Juniormester
18. november 2011 - 16:29 #5
Prøv at kopiere denne kode over i et tomt dokument, og gem den som ListSearchFolders.hta:


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<script type="text/javascript">
resizeTo(510, 708);
</script>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>List & Search Folders</title>
<meta http-equiv="X-UA-Compatible" content="IE=9">
<meta http-equiv="MSThemeCompatible" content="yes">
<style type="text/css">
html, body {
    overflow: hidden;
}
body {
    margin: 0;
    padding: 0;
    font: 0.75em verdana, arial, sans-serif;
    background: threedface;
}
input {
    font: 0.9em verdana, arial, sans-serif;
    padding: 2px;
}
#controls {
    width: 455px;
    margin: 15px auto 0;
}
#controls fieldset {
    margin-bottom: 10px;
}
#controls legend {
    padding: 0 5px 5px;
}
#controls label {
    position: relative;
    width: 420px;
    height: 30px;
    margin: 0 10px;
    display: block;
}
#controls label .right {
    position: absolute;
    width: 300px;
    right: 0;
}
.narrow {
    width: 85px;
    margin: 0 2px;
}
#controls button {
    width: 70px;
}
.buttons {
    padding: 0 0 8px;
    text-align: center;
}
.center {
    text-align: center;
}
#display {
    width: 434px;
    height: 400px;
    padding: 5px 10px;
    margin: 30px auto 0;
    overflow-x: hidden;
    overflow-y: auto;
    background: #fff;
    border: 1px solid threedshadow;
}
#display a {
    display: block;
    width: 430px;
    margin: 3px 0;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
</style>
</head>
<body>

<div id="controls">
    <fieldset>
        <legend>List Folders</legend>
        <label>Start folder: <input class="right" id="rootFolder" type="text" value="C:/sti/til/mappe"></label>
        <div class="buttons"><button onclick="init()">Initiate</button></div>
    </fieldset>
   
    <fieldset id="searchSet" disabled="disabled">
        <legend>Search For Folders</legend>
        <label class="center"><input id="f_A" class="narrow" type="text">
            <input id="f_B" class="narrow" type="text">
            <input id="f_C" class="narrow" type="text">
            <input id="f_D" class="narrow" type="text"></label>
        <div class="buttons"><button onclick="searchFolders()">Search</button></div>
    </fieldset>
</div>
<div id="display"></div>

<script type="text/javascript">
var aFolders = null;
function init() {
    document.getElementById("searchSet").setAttribute("disabled", "disabled");
    aFolders = getFolders(document.getElementById("rootFolder").value, []);
    document.getElementById("searchSet").removeAttribute("disabled");
}
function getFolders(sFolder, aFldrs) {
    var aTmp, sName, sPath, sReplPath,
    oFso = new ActiveXObject("Scripting.FileSystemObject"),
    oFolder = oFso.getFolder(sFolder),
    oEnum = new Enumerator(oFolder.subFolders);
   
    for (; !oEnum.atEnd(); oEnum.moveNext()) {
        sPath = oEnum.item().path;
        sReplPath = sPath.replace(/\\/g, "/");
        sName = oEnum.item().name;
        aTmp = sName.split(" ");
        aFldrs.push([aTmp[0], aTmp[1], aTmp[2], aTmp[3], sReplPath]);
        arguments.callee(sPath, aFldrs);
    }
    return aFldrs;
}
function searchFolders() {
    var sValFA = document.getElementById("f_A").value,
    sValFB = document.getElementById("f_B").value,
    sValFC = document.getElementById("f_C").value,
    sValFD = document.getElementById("f_D").value,
    aRes = [], nFilled, nMatches;
   
    for (var i=aFolders.length-1; i>=0; i--) {
        nFilled = 0;
        nMatches = 0;
        if (sValFA!="") {
            nFilled++;
            if (aFolders[0]==sValFA) nMatches++;
        }
        if (sValFB!="") {
            nFilled++;
            if (aFolders[i][1]==sValFB) nMatches++;
        }
        if (sValFC!="") {
            nFilled++;
            if (aFolders[i][2]!=sValFC) nMatches++;
        }
        if (sValFD!="") {
            nFilled++;
            if (aFolders[i][3]!=sValFD) nMatches++;
        }
        if (nFilled>0 && nFilled==nMatches) aRes.push(aFolders[i][4]);
    }
   
    aRes.sort(mySort);
    showResult(aRes);
   
    function mySort(a, b) {
        return a<b ? 1 : a>b ? -1 : 0;
    }
}
function showResult(aRes) {
    var elmA, elmDispl = document.getElementById("display");
    while (elmDispl.firstChild) elmDispl.removeChild(elmDispl.firstChild);
    for (var i=aRes.length-1; i>=0; i--) {
        elmA = document.createElement("a");
        elmA.setAttribute("href", "file:///"+aRes[i]);
        elmA.setAttribute("title", aRes[i]);
        elmA.appendChild(document.createTextNode(aRes[i]));
        elmDispl.appendChild(elmA);
    }
}
</script>

</body>
</html>


Hvis det er samme rodmappe, du altid kikker i, kan du skrive den ind i feltets value attribut - i stedet for [i]"C:/sti/til/mappe"
Avatar billede avminarm Juniormester
18. november 2011 - 18:31 #6
virker det kun i IE9?
Jeg kan ikke rigtig få det til at søge?

Er der noget specifikt jeg skal gøre?
Avatar billede olebole Juniormester
18. november 2011 - 18:38 #7
Sorry ... det er bl.a. Ekspertens BB-kode parsing, der phucker koden op  :o|


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<script type="text/javascript">
resizeTo(510, 708);
</script>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>List & Search Folders</title>
<meta http-equiv="X-UA-Compatible" content="IE=9">
<meta http-equiv="MSThemeCompatible" content="yes">
<style type="text/css">
html, body {
    overflow: hidden;
}
body {
    margin: 0;
    padding: 0;
    font: 0.75em verdana, arial, sans-serif;
    background: threedface;
}
input {
    font: 0.9em verdana, arial, sans-serif;
    padding: 2px;
}
#controls {
    width: 455px;
    margin: 15px auto 0;
}
#controls fieldset {
    margin-bottom: 10px;
}
#controls legend {
    padding: 0 5px 5px;
}
#controls label {
    position: relative;
    width: 420px;
    height: 30px;
    margin: 0 10px;
    display: block;
}
#controls label .right {
    position: absolute;
    width: 300px;
    right: 0;
}
.narrow {
    width: 85px;
    margin: 0 2px;
}
#controls button {
    width: 70px;
}
.buttons {
    padding: 0 0 8px;
    text-align: center;
}
.center {
    text-align: center;
}
#display {
    width: 434px;
    height: 400px;
    padding: 5px 10px;
    margin: 30px auto 0;
    overflow-x: hidden;
    overflow-y: auto;
    background: #fff;
    border: 1px solid threedshadow;
}
#display a {
    display: block;
    width: 430px;
    margin: 3px 0;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
</style>
</head>
<body>

<div id="controls">
    <fieldset>
        <legend>List Folders</legend>
        <label>Start folder: <input class="right" id="rootFolder" type="text" value="C:/sti/til/mappe"></label>
        <div class="buttons"><button onclick="init()">Initiate</button></div>
    </fieldset>
   
    <fieldset id="searchSet" disabled="disabled">
        <legend>Search For Folders</legend>
        <label class="center"><input id="f_A" class="narrow" type="text">
            <input id="f_B" class="narrow" type="text">
            <input id="f_C" class="narrow" type="text">
            <input id="f_D" class="narrow" type="text"></label>
        <div class="buttons"><button onclick="searchFolders()">Search</button></div>
    </fieldset>
</div>
<div id="display"></div>

<script type="text/javascript">
var aFolders = null;
function init() {
    document.getElementById("searchSet").setAttribute("disabled", "disabled");
    aFolders = getFolders(document.getElementById("rootFolder").value, []);
    document.getElementById("searchSet").removeAttribute("disabled");
}
function getFolders(sFolder, aFldrs) {
    var aTmp, sName, sPath, sReplPath,
    oFso = new ActiveXObject("Scripting.FileSystemObject"),
    oFolder = oFso.getFolder(sFolder),
    oEnum = new Enumerator(oFolder.subFolders);
   
    for (; !oEnum.atEnd(); oEnum.moveNext()) {
        sPath = oEnum.item().path;
        sReplPath = sPath.replace(/\\/g, "/");
        sName = oEnum.item().name;
        aTmp = sName.split(" ");
        aFldrs.push([aTmp[0], aTmp[1], aTmp[2], aTmp[3], sReplPath]);
        arguments.callee(sPath, aFldrs);
    }
    return aFldrs;
}
function searchFolders() {
    var sValFA = document.getElementById("f_A").value,
    sValFB = document.getElementById("f_B").value,
    sValFC = document.getElementById("f_C").value,
    sValFD = document.getElementById("f_D").value,
    aRes = [], nFilled, nMatches;
   
    for (var i=aFolders.length-1; i>=0; i--) {
        nFilled = 0;
        nMatches = 0;
        if (sValFA!="") {
            nFilled++;
            if (aFolders[ i][0]==sValFA) nMatches++;
        }
        if (sValFB!="") {
            nFilled++;
            if (aFolders[ i][1]==sValFB) nMatches++;
        }
        if (sValFC!="") {
            nFilled++;
            if (aFolders[ i][2]!=sValFC) nMatches++;
        }
        if (sValFD!="") {
            nFilled++;
            if (aFolders[ i][3]!=sValFD) nMatches++;
        }
        if (nFilled>0 && nFilled==nMatches) aRes.push(aFolders[ i][4]);
    }
   
    aRes.sort(mySort);
    showResult(aRes);
   
    function mySort(a, b) {
        return a<b ? 1 : a>b ? -1 : 0;
    }
}
function showResult(aRes) {
    var elmA, elmDispl = document.getElementById("display");
    while (elmDispl.firstChild) elmDispl.removeChild(elmDispl.firstChild);
    for (var i=aRes.length-1; i>=0; i--) {
        elmA = document.createElement("a");
        elmA.setAttribute("href", "file:///"+aRes[ i]);
        elmA.setAttribute("title", aRes[ i]);
        elmA.appendChild(document.createTextNode(aRes[ i]));
        elmDispl.appendChild(elmA);
    }
}
</script>

</body>
</html>

Avatar billede avminarm Juniormester
18. november 2011 - 20:09 #8
hmmm - jeg kan stadigvæk ikke få det til at virke?
der sker ingen ting når jeg trykker search skal der søges i alle felter?
Avatar billede olebole Juniormester
18. november 2011 - 20:27 #9
Det virker fint her. Du skal udfylde felterne sådan - og der må gerne være tomme felter. Hvor der er et tomt felt, kan der stå, hvad som helst på den pågældende plads:

felt 1: '12345678'
felt 2: 'hans jensen'
felt 3: 'bynavn'
felt 4: 'andet'

Men det kræver naturligvis, at mønstret er overholdt i mappenavnene  =)
Avatar billede avminarm Juniormester
21. april 2012 - 12:47 #10
har fundet u af der er begrænsninger på maskinen jeg skal bruge (jeg kan ikke ændre dem) lukker sprg - points ole?
Avatar billede avminarm Juniormester
29. april 2012 - 23:01 #11
vil du ike have points ole?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester