Gå til innhold

Anbefalte innlegg

Hei !

Prøver å lage et script som arkiverer filer i forskjellige mapper.

 

Problemstilling:

Har en mappe med mange filer i som trenger å sorteres i riktig mappe med mappe navn.

Det jeg vil scriptet skal gjøre er å hente ut når dokumentet ble opprettet å legge det inn i en ny mappe som han oppretter selv med dato på fra når filen ble laget. så vis det er 1000 filer der skal alle legges i riktig mappe med dato når det ble laget.

 

har kommet så langt selv:

 

@echo off

title copy

 

 

mkdir %date%

 

move *.txt %date%

 

 

pause

 

Dette er sikkert helt feil, for jeg er veldig ny innen dette, men det jeg mangler er at den henter ut datoen på filene når de ble laget.

 

Noen som kan hjelp?

Endret av Spirax
Lenke til kommentar
Videoannonse
Annonse

Her er et lite script som gjør dette:

Dim objFso, strDir, strDestDir, objDir, File
Set objFso = CreateObject("scripting.filesystemobject")

' strDir - Dette er mappen som inneholder filene som skal sjekkes
strDir = "C:\Temp" 

' strDestDir - Dette er rotmappen, der "datomappene" skal opprettes
strDestDir = "C:\Temp" 
Set objDir = objFso.GetFolder (strDir)
For Each File In objDir.Files 
arrDateCreated = Split (File.DateCreated, " ") ' dato og klokkeslett skilles av et mellomrom
strDateCreated = arrDateCreated(0) ' Vil kun ha dato ikke klslett
strMoveToDir = strDestDir & "\" & strDateCreated
' Sjekk om mappen finnes, hvis ikke - opprett den
If Not objFso.FolderExists (strMoveToDir) Then
	objFso.CreateFolder strMoveToDir
End If
' Flytt filen til mappen
File.Move strMoveToDir & "\"
Next

Dette scriptet sjekker alle filene i en gitt mappe (strDir), og flytter dem til en nye mappe som er datoen for da de ble opprettet.

 

Scriptet tar kun for seg filene i den gitte mappen, og ikke eventuelle undermapper.

Men det er ikke mye endring som må til for at det skal kjøres på undermapper også...

Endret av kakkle
Lenke til kommentar
en liten ting, er det mulig å endre sånn at den sorterer etter måned og år istedenfor alle dager ?

 

Gammel:

08.09.2008

 

skal bli

09.2008 osv

 

er dette mye vanskeligere å få til?

 

Du endrer:

strMoveToDir = strDestDir & "\" & strDateCreated

 

til:

strMoveToDir = strDestDir & "\" & Mid(strDateCreated, 3)

 

Eventuelt mulig du må konvertere dato til tekst (string):

strMoveToDir = strDestDir & "\" & Mid(CStr(strDateCreated), 3)

 

Alternativr kan du bruke dato-objektet direkte. Samling av funksjoner og forklaring av disse finner du bl.a her

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...