• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Bestanden markeren op basis van lijst??

Status
Niet open voor verdere reacties.

EliaNieuwhuis

Gebruiker
Lid geworden
23 jul 2015
Berichten
77
Hallo,

Ik heb een ingewikkelde vraag.

Ik heb een mapstructuur met honderden mappen met duizenden afbeeldingen. (barcodenr. als bestandsnaam)
Nu wil ik oude/verlopen afbeeldingen verplaatsen naar een map ARCHIEF.
Maar om deze één voor één na te lopen, dat is een megawerk.
Ik heb wel een lijst van de afbeeldingen die bewaart moeten blijven. De rest moet dan naar archief.

De vraag:
Kun je op basis van een lijst in Excel of kladblok bestanden markeren of verplaatsen?
Of kun je op een andere manier een onderscheid maken in bestanden.

Ik kan me voorstellen dat iemand zegt; ordenen op datum en de oudste verwijderen. Maar de oudste zijn niet altijd
verlopen. De datum van de afbeelding zegt niets.

Bij voorbaat dank!
 
Wat zegt dan wel wat over de verplaatsbaarheid? Linksom of rechtsom, je zal ergens op moeten selecteren of dat nu automatisch gaat of handmatig. Simpel gevraagd : op basis van welk criterium weet jij welke naar het archief moeten en welke niet?
 
Misschien kun je wat met het programma Siren. Heeft veel in huis qua mappen e.d.
 
Misschien kun je wat met het programma Siren. Heeft veel in huis qua mappen e.d.

Beste Venga, ik zie niet echt hoe dit programma helpt. Je kunt hiermee, net als bij 'Bulk Rename Utility' bestanden hernoemen.

Wat zegt dan wel wat over de verplaatsbaarheid? Linksom of rechtsom, je zal ergens op moeten selecteren of dat nu automatisch gaat of handmatig. Simpel gevraagd : op basis van welk criterium weet jij welke naar het archief moeten en welke niet?


Klopt. Ik heb een lijst (bijv. in Excel) waarin alle actieve barcodes staan. De afbeeldingen zijn op barcode opgeslagen.

Ik wil dus eigenlijk dat
1. de afbeeldingen die NIET op de lijst staan, verplaatst of hernoemt worden.
of
2. de afbeeldingen die WEL op de lijst staan, gemarkeerd of hernoemt worden (bijv. _ACTIVE) (dit kan ik later met een programma verwijderen)
 
Laatst bewerkt door een moderator:
Ok, als ik je nu goed begrijp dan zou dat progje of tooltje een gemaakte lijst moeten vergelijken (op een bepaalde manier) met een bestandsslijst / structuur in de Windows verkenner en vervolgens op basis van bepaalde criteria acties uit moeten gaan voeren?

Dat is puur programmatisch en gaat mijn kennis (ver) te boven. Ik kan je mogelijk wel op weg helpen. Ik denk dat je (bijv.) in het forum Excel, misschien zelfs nog beter in Access, deze vraag moet stellen. Ik denl dat als je even in je eerste bericht klikt op 'attendeer moderator' en vervolgens in het tekstvak verzoekt om deze vraag te verplaatsen, je al een heel eind bent. Ik kan natuurlijk niet bepalen wat jij van Access weet, dus misschien blijft je keuze wel beperkt tot Excel (maar da's natuurlijk aan jou).

Ik kan je wel helpen aan een tooltje (zie bijlage) waarmee je de verkennerstructuur om kunt zetten naar een .txt bestand. Dit .txt bestand kun je vervolgens weer in (bijv.) Excel inlezen.

Laat svp nog een keer weten of je uiteindelijk een oplossing hebt gekregen / gevonden, want het lijkt mij een redelijk ingewikkeld probleem.
 

Bijlagen

Laatst bewerkt:
Verplaatst van Win 7 naar deze sectie, wellicht dat je hier beter geholpen wordt.
 
Ik heb ooit een tooltje in Excel gemaakt die "geresizede" foto's in alle fotomappen verplaatste naar een nieuwe map. Maar bedenk je wel dat dit soort tools nooit zonder risico zijn. Ik zal vanavond ff kijken of ik dat tooltje nog kan vinden. Of iemand anders moet natuurlijk al met de perfecte oplossing zijn gekomen... ;)
 
Laatst bewerkt:
Nou, ik heb het bestand kunnen vinden en aangepast naar jouw behoefte (gok ik). In de bijlage vind je een workbook met de sheets "main" en "verwijder". Zet in de sheet "verwijder" alle bestandsnamen die je naar een Archief-map wilt hebben. Deze namen moeten volledig zijn, dus inclusief de extensie!
Ga vervolgens naar de sheet "main" en druk op de knop Get Files. Je wordt dan gevraagd om de hoofdmap aan te geven waar de bestanden staan. Let op, óók al je submappen worden in 1x meegenomen. Er wordt dan een tabel getoond met in kolom A de bestandsnamen en in kolom B het complete pad inclusief bestandsnaam. Kolom C toont je later een overzicht van bestanden die naar het Archief zijn verplaatst.
De knop "verplaats bestand" stuurt de code aan die langs elk bestand gaat in de sheet "main" en dat bestand vergelijkt met de tabel van bestandsnamen in de sheet "verwijder".

De voorwaarde voor het goed functioneren van het "verplaatsen" is dat die bestandsnamen uniek zijn. Als je in de diverse verschillende mappen bestanden hebt staan met een gelijke bestandsnaam, heb je een probleem en kan dit programma NIET worden gebruikt. Je verplaatst dan wellicht een fout bestand namelijk.

Voor de veiligheid heb ik het "risico gedeelte" nog even als commentaar in de code staan. Je kan nu éérst een keer testen zonder dat er iets gebeurt. Je ziet alleen in de derde kolom het woord "gearchiveerd" verschijnen bij die bestanden die verplaatst zouden gaan worden...
CHECK DAT DUS ÉÉRST HÉÉL GOED VOORDAT JE DE COMMENTAARREGELS TERUG ZET NAAR CODE REGELS !!!!

Hieronder het codeblokje dat je terug kan vinden in de VBA sheetmodule van de sheet "main". De 2 stukjes in het rood moet je dus aanpassen voor het "echte" werk.
Code:
Sub VerplaatsNaarArchief()
Dim objFile As Object
Dim TempPath As String
Dim i As Long
Dim AllFiles As Variant
Dim MvFiles As Variant
Dim objFolder As Object
Set objFolder = CreateObject("Scripting.FileSystemObject")
    'verplaats de bestanden naar het archief
    'test eerst of de folder waar naartoe verplaatst wordt al bestaat
    
    ' zet alle bestanden van bovenstaande procedure in een array
    AllFiles = Sheets("Main").Cells(4, 1).CurrentRegion.Resize(, 3)
    MvFiles = Sheets("Verwijder").Cells(1).CurrentRegion
    
    For i = 2 To UBound(AllFiles, 1)
        TempPath = Replace(AllFiles(i, 2), AllFiles(i, 1), "") & "ARCHIEF"
        'test eerst of het een geresized bestand is
        If Not IsError(Application.Match(CStr(AllFiles(i, 1)), MvFiles, 0)) Then
            ' zo ja, test of de Resized folder al bestaat > indien niet dan aanmaken
'----------------------------------------------------------------------------------------------
[COLOR="#FF0000"][B]' hieronder de quotes verwijderen om het echte verplaatsen te realiseren
'            If Not objFolder.FolderExists(TempPath) Then
'                objFolder.CreateFolder TempPath
'            End If[/B][/COLOR]
'----------------------------------------------------------------------------------------------
            AllFiles(i, 3) = "GEARCHIVEERD"
'----------------------------------------------------------------------------------------------
[COLOR="#FF0000"][B]' hieronder de quotes verwijderen om het echte verplaatsen te realiseren
'            objFolder.MoveFile AllFiles(i, 2), TempPath & "\"[/B][/COLOR]
'----------------------------------------------------------------------------------------------
        End If
     Next i
    
    Sheets("Main").Cells(4, 1).Resize(UBound(AllFiles, 1), 3) = AllFiles
    
End Sub

DISCLAIMER
Het gebruik van deze procedures in niet zonder risico. Ik acht mezelf niet verantwoordelijk voor enige schade die ontstaat met het gebruik hiervan. Zorg dus voor backups van de bestanden waarmee je aan de slag wilt gaan.
Het in deze reactie getoonde codeblokje is van mijn hand. De overige procedures zijn van een voor mij onbekende maker. Helaas heb ik geen bron meer. Deze procedures heb ik licht aangepast naar mijn eigen wensen.
 

Bijlagen

Laatst bewerkt:
Beste Ginger. Bedankt voor alle moeite. Ik denk, na `t lezen van je toelichting dat dit wellicht niet gaat werken. De opzet is perfect, maar het gaat niet om unieke bestanden. Elke afbeelding in jpg is tweemaal opgeslagen op barcodenr. Eenmaal in een map LR (lage resolutie) en eenmaal in een map HR (hoge resolutie)

Voorbeeld
145777158121.jpg zit in submap 451112 in de hoofdmap HOGE RESOLUTIE
145777158121.jpg zit tevens in submap 451112 in de hoofdmap LAGE RESOLUTIE
In elke submap zitten 1 of meer jpg bestanden. Bijv. 145777158121.jpg - 145777158121_1.jpg - 145777158121_2.jpg etc.. - Jouw bestand werkt niet met dubbele bestanden.
 
Laatst bewerkt:
Ok, als ik je nu goed begrijp dan zou dat progje of tooltje een gemaakte lijst moeten vergelijken (op een bepaalde manier) met een bestandsslijst / structuur in de Windows verkenner en vervolgens op basis van bepaalde criteria acties uit moeten gaan voeren?

Dat is puur programmatisch en gaat mijn kennis (ver) te boven. Ik kan je mogelijk wel op weg helpen. Ik denk dat je (bijv.) in het forum Excel, misschien zelfs nog beter in Access, deze vraag moet stellen. Ik denl dat als je even in je eerste bericht klikt op 'attendeer moderator' en vervolgens in het tekstvak verzoekt om deze vraag te verplaatsen, je al een heel eind bent. Ik kan natuurlijk niet bepalen wat jij van Access weet, dus misschien blijft je keuze wel beperkt tot Excel (maar da's natuurlijk aan jou).

Ik kan je wel helpen aan een tooltje (zie bijlage) waarmee je de verkennerstructuur om kunt zetten naar een .txt bestand. Dit .txt bestand kun je vervolgens weer in (bijv.) Excel inlezen.

Laat svp nog een keer weten of je uiteindelijk een oplossing hebt gekregen / gevonden, want het lijkt mij een redelijk ingewikkeld probleem.


Bedankt gast0225! Ja het is een ingewikkeld probleem waar een hoop mensen baat bij hebben. Ik moest bijv. eens 1000 mappen aanmaken op basis van een lijst. Met een .bat file was dat in 10 min. gedaan. Maar als je dan handmatig moet doen ben je 2 dagen bezig.
 
Ik denk, na `t lezen van je toelichting dat dit wellicht niet gaat werken.

Dát valt in dit stadium nog niet zomaar te zeggen. Op basis van de eerste summiere post, heb ik dit gemaakt. Maar als jij nou héél precies gaat aangeven hoe de mappenstructur is en hoe de bestandsnamen zijn opgebouwd én vooral wat dan wel en wat dan niet verplaatst mag worden.
Ik zie overigens ook dat ik het omgekeerde heb gemaakt van wat je vroeg. Mijn code verplaatst de bestanden die worden gevonden in je eigen lijst. Het moet dus net het omgekeerde worden dat de niet-gevonden bestanden worden verplaatst (maar dit is slechts een kleine aanpassing).

Kan je dan ook gelijk tonen op welke wijze jij die lijst hebt van bestanden die je wilt houden? Is dat bestandsnaam + pad, of ???
 
1. Ik heb een lijst in Excel met alle barcodes. De afbeeldingen zijn op barcode opgeslagen.
Die kan ik aanpassen naar wens.
2. We hebben een boomstructuur.
Dus dir MERK / dir SOORT / dir HR (hoge resolutie) of dir LR (lage resolutie) / dir ARTIKELNR / barcode.jpg
Het gaat om 3380 jpgs
3. In de excellijst staan artikelen die actief zijn. Daarvan moeten we de jpgs bewaren in deze boomstructuur.
Wat niet in de lijst staat moet óf gemarkeerd worden óf verplaatst worden naar dir ARCHIEF
 
Ik kreeg de volgende tip:

Met tool lijst van alle jpgs in mappen uitdraaien in .txt en deze in een kolom in Excel plaatsen.
In tweede kolom de lijst plakken van bestanden die actief zijn.
Je ziet dan dat de eerste kolom langer is. Bijvoorbeeld 100 jpgs meer.
Dan laat je Excel alle dubbele waarden markeren.
Alle dubbele waarden wis je.
Je houdt dan de jpgs over die weg kunnen.
Die kun je één voor één verwijderen.
Kost ook tijd, maar gaat sneller dan 3300+ jpgs doorlopen.

Ik ga dit proberen. Bedankt voor alle hulp!
 
Laatst bewerkt:
Handmatig kán ook! Zeker weten. Maar mijn procedure deed hetzelfde als je nu omschrijft, maar dan geautomatiseerd.
Dus... Jij mag 't zeggen. Als je 't handmatig doet, hou je zelf 100% de controle. Maar als je 't alsnog automatisch wilt doen, moet je 't maar laten weten.
 
Handmatig kán ook! Zeker weten. Maar mijn procedure deed hetzelfde als je nu omschrijft, maar dan geautomatiseerd.
Dus... Jij mag 't zeggen. Als je 't handmatig doet, hou je zelf 100% de controle. Maar als je 't alsnog automatisch wilt doen, moet je 't maar laten weten.


Bedankt Ginger voor je vele werk. Ik doe `t nu handmatig en dat kost veel tijd. Maar lang niet zoveel als ik dacht. Ik sluit dit forum-onderwerp.
 
of zo

als in het huidige document in kolom A vanaf A1 de bestandsnamen staan die verwijderd moeten worden
als G de drive is waar al die .jpg bestanden staan
als F de drive is die het 'archief' bevat

Code:
sub M_snb()
  sn=columns(1).specialcells(2)
  sp=split(createobject("wscript.shell").exec("cmd /c dir G:\*.jpg /b/s").stdout.readall,vbcrlf)

  for j=1 to ubound(sn)
     sq=filter(sp,sn(j,1))
     for j=0 to ubound(sq)
        Name sq(j) As "F:\Archief\" & format(j,"000_") & dir(it)
     next
  next
End sub

Als in kolom A de bestanden staan die bewaard moeten blijven:

Code:
sub M_snb()
  sn=columns(1).specialcells(2)
  sp=split(createobject("wscript.shell").exec("cmd /c dir G:\*.jpg /b/s").stdout.readall,vbcrlf)

  for j=1 to ubound(sn)
     sp=filter(sp, sn(j,1),0)
  next

  for j=0 to ubound(sp)
    Name sp(j) As "F:\Archief\" & dir(it)
  next
End sub
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan