Avatar billede kedden Praktikant
08. november 2010 - 21:46 Der er 5 kommentarer og
1 løsning

lav dirs udfra filers dato attribut

Har en lang liste med videofiler

Jeg vil gerne læse dato attributten på alle filerne og oprette et dir for hver unik dato ( gerne bare på månedsbasis ala YYYY-MM )

Har søgt lidt online og fundet et batch script der laver et dir udfra dags dato -

for /F "tokens=1-4 delims=/- " %%A in ('date/T') do set var= %%C-%%B-%%A
md %var%

Jeg er rimeligt blank ifht scripting/progammering det var bare lige det eneste jeg kunne google mig frem til :)

Any ideas?
Avatar billede tjens Nybegynder
08. november 2010 - 22:51 #1
Du skal kigge på FileSystemObject: http://www.google.dk/search?&q=vbscript+filesystemobject

Du kan udvide søgningen med file date og create folder og finde masser af relevante eksempler.
Avatar billede kedden Praktikant
09. november 2010 - 10:30 #2
Har siddet og kigget lidt rundt på filesystem object men der er sgu lang vej hjem - når man ikk har styr på basal syntax i vb.
Er der ikk nogen der kan hjælpe lidt mere?

-Altå loope igennem filerne i et dir1

-For hver fil læse "date of creation" og gemme denne dato i et array hvis datoen er unik

- loope gennem dato-arrayet og lave nye "dato dirs" i dir2

loope gennem filerne i dir1 for hver dato i datoarray og hvis fil.dato==dato.array[n] så kopier fil til datodir'et.

Ka sikkert gøres meget smartere

Håber en eller anden finder tid til noob'en her :)
Avatar billede tjens Nybegynder
09. november 2010 - 23:53 #3
#2 Du har lagt spørgsmålet under "Programmering", så derfor troede jeg at du ville lære det.  ;-)
Eksperten har også en kategori "Opgaver" hvis man gerne vil have andre til at lave det.

Nå, men nu har jeg tastet i 3 timer, og har fået banket et script sammen.
Gem følgende i en fil, der ender på .HTA på din pc:
<?xml version="1.0" encoding="UTF-8"?>
<html  xmlns="http://www.w3.org/1999/xhtml">
<hta:application id="oHTA"  applicationname="MyHTA">
<head>
<title>File Search</title>
<style type="text/css">
    body                    {background-color: white; font-family : sans-serif;}
</style>
<script  type="text/javascript">

var oFSO = new ActiveXObject("Scripting.FileSystemObject");
var CANCEL;
var searchWords;
var searchWordCount;
var subDirArray = [];
var count;
var fcount;
var found;
var ResultTable;

function StartSearch() {
    ResultTable=document.getElementById("resultTable");
    while ( ResultTable.hasChildNodes() ) ResultTable.removeChild(ResultTable.lastChild);
    CANCEL = false;
    document.getElementById("startButton").disabled = true;
    document.body.style.cursor = "wait";
    searchWords = document.frmSearch.name.value.split(',');
    searchWordCount = searchWords.length;
    for (var i=0; i < searchWordCount; i++) {
        searchWords[i] = searchWords[i].replace(/ /g,'');
    }
    subDirArray = [];
    subDirArray[0] = document.frmSearch.infolder.value;
    count = 0;
    fcount = 0;
    found = 0;
    SearchFolder();
}

function  SearchFolder() {
        if (count == subDirArray.length ||  CANCEL) {
                document.getElementById("statusDiv").firstChild.nodeValue = ' ' + found + ' files found. ' + fcount + ' files searched in ' + count + ' directories.';
                document.getElementById("startButton").disabled = false;
                document.body.style.cursor = "";
                return;
        }
       
        document.getElementById("statusDiv").firstChild.nodeValue = subDirArray[count];
        var objDir = oFSO.GetFolder(subDirArray[count]);
        aFolders = new Enumerator(objDir.SubFolders);
        for (var i=0;!aFolders.atEnd();aFolders.moveNext()) {
                subDirArray[ subDirArray.length ] = aFolders.item().Path;
        }

        aFiles = new Enumerator(objDir.Files);
        for (var i=0;!aFiles.atEnd();aFiles.moveNext()) {
            SearchFile( aFiles.item() );
        }
        count++;
        setTimeout( 'SearchFolder()', 1 );
}

function SearchFile( file ) {
    fcount++;
    for (var i=0; i < searchWordCount; i++) {
        if  (file.Name.indexOf( searchWords[i] )  > -1 ) {
            found++;
            var link = document.createElement("a");
            var row = document.createElement("tr");
            var cell1 = document.createElement("td");
            var cell2 = document.createElement("td");
            var fileDate = new Date(file.DateCreated );
            var MM = (fileDate.getMonth() + 1).toString();
            if (MM.length < 2) MM = '0' + MM;
            link.href = file.Path;
            link.title = file.Path;
            link.appendChild( document.createTextNode( file.Name + ' ') );
            cell1.appendChild( link );
            cell2.appendChild( document.createTextNode( ' ' + document.frmSearch.outfolder.value + '\\' + fileDate.getFullYear() + '_' + MM ) );
            row.appendChild( cell1 );
            row.appendChild( cell2);
            document.getElementById( "resultTable" ).appendChild( row );
           
            return;
        }
    }
}

function moveFiles(mType) {
    document.body.style.cursor = "wait";
    document.getElementById("startButton").disabled = true;
    setTimeout("doMoveFiles('" + mType + "')", 5);
}

function doMoveFiles(mType) {
    var fileTRs = document.getElementById("resultTable").getElementsByTagName("TR");
    for (var i = 0; i < fileTRs.length && CANCEL == false; i++) {
        var nextFile = oFSO.getFile(fileTRs[i].getElementsByTagName("A")[0].href);
        var toFolderName = fileTRs[i].getElementsByTagName("TD")[1].firstChild.nodeValue.replace(/\\/g, "/").replace(/ /g, "");
        var toFolder = oFSO.GetFolder(document.frmSearch.outfolder.value);
        //alert("#" + toFolderName + "#\n" + oFSO.folderExists(toFolderName));
        if (!oFSO.folderExists(toFolderName)) {
            oFSO.CreateFolder(toFolderName);
        }
        if (mType == "MOVE") {
            nextFile.move(toFolderName + '/' + nextFile.Name);
        }
        if (mType == "COPY") {
            nextFile.copy(toFolderName + '/' + nextFile.Name);
        }
    }
    document.getElementById("startButton").disabled = false;
    document.body.style.cursor = "";
}

</script>
</head>
<body>
    <form name="frmSearch">
        <table>
            <thead><tr>
                <th>File types</th>
                <th>From Folder</th>
                <th>To Folder</th>
            </tr></thead><tbody><tr>
                <td><input type="text" name="name" value=".wmv, .mov, .mp4" size="30" title="List of search texts" ></td>
                <td><input type="text" name="infolder" value="C:\VideoUploads" size="40" title="Folder to search" ></td>
                <td><input type="text" name="outfolder" value="C:\VideoArchive" size="40" title="Folder to search" ></td>
            </tr><tr>
                <td></td>
                <td><input type="button" id="startButton" value="Search Folder" onclick="StartSearch();"></td>
                <td><input type="button" value="Cancel" onclick="CANCEL=true;"></td>
            </tr></tbody>
        </table>
    </form>
    <div id="statusDiv"> </div>
    <div id="buttonsDiv">
        <input type="button" value="Move" onclick="moveFiles('MOVE')" >
        <input type="button" value="Copy" onclick="moveFiles('COPY')" >
    </div>
    <p>
        <table border="0">
            <thead><tr><th>File</th><th>To Folder</th></tr></thead>
            <tbody  id="resultTable"></tbody>
        </table>
           
    </p>
</body>
</html>
Håber det kan bruges ;-)
Avatar billede kedden Praktikant
10. november 2010 - 10:52 #4
Hej og mega mange tak for hjælpen - får en lille scriptfejl når jeg prøver at trykker search folder - har prøvet

se http://www.cadmagic.dk/error.JPG

kan du få det til at køre hos dig?
Avatar billede tjens Nybegynder
10. november 2010 - 14:00 #5
Fejlen skyldes at der er et "blanke-tegn" der er forsvundet under opload til eksperten.

Find linien
<div id="statusDiv"> </div>
nær bunden, og ret den til
<div id="statusDiv">&bnsp;</div>


Filtyper og  fra/til-folder kan du rette i, nogen få linier over dette, så der står dine egne værdier hver gang den starter.
Avatar billede kedden Praktikant
10. november 2010 - 14:49 #6
Tjens du er et geni - det spiller for vildt!
KæmpeStor tak herfra - det er meget bedre end jeg havde troet!
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
Kurser inden for grundlæggende programmering

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