[Batch] Controleren op duplicate files en oudste verwijderen

Pagina: 1
Acties:

  • Robsta86
  • Registratie: Oktober 2009
  • Laatst online: 07:00
Goedemorgen,

Ik zit met een issue waar ik helaas niet zelf uit kom omdat ik nog te weinig kennis heb van programmeren.

Ik heb een directory op de pc waar door ons ERP pakket bestanden met bijvoorbeeld onderstaande naamgeving in klaar gezet worden:

1_21_511112_759094_3035932.PAK
1_21_511112_759094_3035932.pk2

In deze naamgeving wordt het eerste deel (1_21_512291_759113_) gegenereerd door ons ERP pakket, het laatste deel (3035933) is de order referentie.
Door het handmatig draaien van een .bat bestand worden deze bestanden verstuurd naar een derde partij.

Nu gebeurd het regelmatig dat een item nogmaals klaargezet wordt na een correctie, voordat de bestanden verstuurd zijn.

Hierbij zal het eerste deel van de bestandsnaam(x_xx_xxxxxx_xxxxxx_) weer door het ERP pakket gegeneerd worden (random), en de (3035932) is dus de order referentie.

Voorbeeld:

1_21_511112_759094_3035932.PAK
1_21_511112_759094_3035932.pk2
1_21_999999_999999_3035932.PAK
1_21_999999_999999_3035932.pk2


Ik zou nu een uitbreiding willen maken in het .bat bestand wat gedraaid wordt welke het volgende uitvoert:

1. Controleer of x_xx_xxxxxx_xxxxxx_<klantreferentie>.PAK en x_xx_xxxxxx_xxxxxx_<klantrefrerentie>.pk2 uniek zijn.
2. Indien ze uniek zijn ga door naar "verstuur de bestanden"
3. Indien x_xx_xxxxxx_xxxxxx_<klantreferentie>.PAK en x_xx_xxxxxx_xxxxxx_<klantrefrerentie>.pk2 meerdere malen voorkomen, controleer welke .PAK en .pk2 het oudste zijn, en verwijder de oudste
4. Verstuur de bestanden

De reden dat ik dit in het .bat bestand wil meenemen is omdat er soms honderden bestanden klaar staan voordat er verzonden wordt, en er meerdere mensen bestanden klaar zetten. Het gebeurd te vaak dat er niet goed gecommuniceerd wordt en dat bestanden dubbel de deur uit gaan.

Ik heb dit al aangekaart bij de leverancier van ons ERP pakket maar zij geven aan het niet in de software op te kunnen lossen (lees: niet willen).

Wie kan mij een zetje in de goede richting geven hoe ik dit het beste aan kan pakken?

Acties:
  • 0 Henk 'm!

  • Kalentum
  • Registratie: Juni 2004
  • Laatst online: 07:44
Ik denk dat je dat niet meer met batch files kan oplossen maar een scripttaal moet gaan gebruiken. Ik neem aan dat het spul op Windows draait en daar is Powershell beschikbaar waarmee je dit zou moeten kunnen oplossen.

Hou er ook rekening mee dat tijdens het checken van de bestanden er ook nog nieuwe bestanden bij kunnen komen. Je zou je script dus kunnen beginnen door alles te verplaatsen naar een tijdelijke locatie en daar dan de bestanden te controleren.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

En zowel Batch als PowerShell horen niet in Programming maar in Windows Clients, zie Waar hoort mijn topic? ;)

PRG>>WOS

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Killah_Priest
  • Registratie: Augustus 2001
  • Laatst online: 23:25
Batch is nogal verouderd (het is vast wel mogelijk maar erg lastig).
Ik zou voor een powershell script gaan (dat is tegenwoordig toch wel DE manier om dit soort dingen te doen op Windows)

Acties:
  • 0 Henk 'm!

  • Robsta86
  • Registratie: Oktober 2009
  • Laatst online: 07:00
@NME excuses voor het verkeerd wegzetten van mijn vraag, bedankt voor het verplaatsen!

@rutgerw de bestanden worden klaargezet door handelingen op de betreffende pc, dus op het moment dat iemand het batch bestand draait om de bestanden te versturen zullen er geen nieuwe bestanden bij komen...

Het klopt overigens dat het hier om een Windows (7 PRO) machine gaat...

Powershell heb ik mij nog nooit in verdiept, ik zal eens op zoek gaan naar wat handige tutorials...