Automatisch hernoemen bestandsnamen: per ongeluk hernoemd

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • ITS PLUS
  • Registratie: Januari 2012
  • Laatst online: 30-09 10:17
Wegens een probleem met een syncing software zijn er een 5000 bestanden verandert geraakt van naam die terug hun normale extensie moeten krijgen en hun normale filename.


Situatie is nu als volgt:

Bvb een bestand genaamt huis.pdf is nu omgezet in 2 files

- U00a63494-d24f-42cb-b21f-9dbadd96164fdce07c3c-fc2e-483e-8bd6-6fb2d93991f-Huis.pdf.RFMETA (hier zit de juiste bestandsnaam in verwerkt, hier dus Huis.pdf, verder is dit een leeg bestand, slechts 2kb groot
- U00a63494-d24f-42cb-b21f-9dbadd96164fdce07c3c-fc2e-483e-8bd6-6fb2d93991f.file , dit is het eigenlijke bestand huis.pdf (maar volledig verkeerd van naam, deze hernoemen naar huis.pdf zorgt ervoor dat de pdf terug te openen valt.


De bovenste file bevat de juiste filename. De onderste file bevat de juiste inhoud naar het einde toe van de bestandsnaam.

Het onderste bestand zou dus de filename huis.pdf moeten krijgen.

Iemand idee of ik dit kan automatiseren?
De bestandsnaam is ook bij elk bestand anders, dus er zit geen patroon in, dus kan niet zomaar een zoeken/vervangen uitvoeren.

Alle reacties


Acties:
  • 0 Henk 'm!

  • Brahiewahiewa
  • Registratie: Oktober 2001
  • Laatst online: 30-09-2022

Brahiewahiewa

boelkloedig

pak je favorite scriptingtaal en programmeer 't zelf
Je hoeft niet meer te doen dan <volgnummer><guid>.file te hernoemen naar wat overblijft als je de bijbehorende .RFMETA file van <volgnummer><guid> en .RFMETA ontdoet
Q&D tien regels code; als je 't netjes wilt doen 30

QnJhaGlld2FoaWV3YQ==


Acties:
  • 0 Henk 'm!

  • Will_M
  • Registratie: Maart 2004
  • Niet online

Will_M

Intentionally Left Blank

Voordat je aan het hernoemen gaat: Weet je zeker dat je niet door een cryptolocker geraakt bent?

[ Voor 81% gewijzigd door Will_M op 20-06-2017 01:50 ]

Boldly going forward, 'cause we can't find reverse


Acties:
  • 0 Henk 'm!

  • The_Vice
  • Registratie: Augustus 2002
  • Laatst online: 24-09 22:04
Ik zou hem eigenlijk niet hernoemen, maar laten kopieren naar een nieuw bestand met de goede naam in een andere map. Of op een kopie je bestandsmap loslaten.

Dan kan je in ieder geval een nieuwe poging wagen mocht je script niet lekker lopen.

Excel zou mijn goto tool zijn om een batch file in te bouwen. Met wat splitsen en vlookups moet je een eind komen. Bijv door te matchen op de eerste 70 characters van beide files.

[ Voor 5% gewijzigd door The_Vice op 20-06-2017 01:58 ]


Acties:
  • 0 Henk 'm!

  • Squ1zZy
  • Registratie: April 2011
  • Niet online
Excel met een batch bestand? Het moet werkelijk niet gekker worden.

Ook het advies van "je favoriete scriptingtaal" zou ik sterk afraden. Er moet een standaard zijn binnen elk bedrijf. Je kan wel iets gaan bouwen in Cobol, maar wie gaat dat onderhouden? Heeft diegene die je backup is ook Cobol kennis? Als er een nieuwe medewerker gezocht moet worden, wat wordt er als profielschets opgegeven?

Zorg dat er standaarden komt en hou je daaraan. Is die er niet, maak dan een opzet.

Je zit in Windows Clients dus ik ga er vanuit dat het om Windows gaat. Je zou als standaard dan PowerShell moeten kiezen. Ga a.u.b. niet aan de slag met andere talen op een Windows platform.

Om het probleem om te lossen kan in 5 minuten.
Maak als eerst een backup!!!

Maak bijvoorbeeld 2 folders (een folder met .RFMETA en een folder met de .file bestanden), pak het bestandsnaam op, split het door middel van een . en gebruik de eerste in de array als zoekveld voor in de andere folder. Bij een match, knip waarop je hebt gezocht eraf met een - erachter en je bent klaar.

Met PowerShell zou dit in 5 minuten gedaan moeten zijn. Helaas zit ik met een mobiel en kan nu niet bij mijn scripts, maar als je zelf iets bouwt en post zijn de meeste Tweakers niet beroerd om te helpen :)

[ Voor 3% gewijzigd door Squ1zZy op 20-06-2017 07:11 ]


Acties:
  • 0 Henk 'm!

  • ITS PLUS
  • Registratie: Januari 2012
  • Laatst online: 30-09 10:17
Backup is reeds gemaakt, dus er mag wat verkeerd gaan :)
Het is geen cryptlocker, want bij manueel hernoemen kan ik bestanden direct openen.

Is idd in Windows omgeving, straks eens proberen met powershell, ik hou jullie op de hoogte.

Acties:
  • 0 Henk 'm!

  • The_Vice
  • Registratie: Augustus 2002
  • Laatst online: 24-09 22:04
Squ1zZy schreef op dinsdag 20 juni 2017 @ 07:09:
Excel met een batch bestand? Het moet werkelijk niet gekker worden.
Wat is daar mis aan dan? Gebruik ik vaak genoeg om een re-naming in elkaar te zetten. Vaak zijn de wensen per geval verschillend, en de job grootte te klein, en te incidenteel om er serieus professioneel en auditable tegen aan gaan. Ook nog eens heerlijk makkelijk om waar nodig enkel waarden aan te passen. Excel file bij je back-up bewaren en iedereen kan terug vinden wat er ooit gedaan is.
Er moet een standaard zijn binnen elk bedrijf.
Lijkt me in geval van TS niet nodig, het gaat volgens mij ook hier om een incidenteel geval.
Dan kan je voor alles wel een standaard gaan opschrijven.

Zoiets zou je op basis van risico en verloren tijd moeten inschatten. Maar in dit geval lijkt me dan nog steeds dat als dit geregeld aan de orde gaat komen er eerst eens naar de hard/software moet worden gekeken. Wat bovenstaande dan weer een incident maakt.

Acties:
  • 0 Henk 'm!

  • ITS PLUS
  • Registratie: Januari 2012
  • Laatst online: 30-09 10:17
Is idd een eenmalige actie wegens verkeerdelijk gelopen syncsoftware.

Heb het geprobeerd met excel mbv VBA macro, maar er lukt nog iets niet.

Heb een excel gemaakt met 2 kolommen,
in de linkse kolom staat de huidige bestandsnaam
in de rechterkolom staat de nieuwe bestandsnaam.

Aangezien ik de helft van de files niet nodig heb, heb ik die laten hernoemen naar oplopende cijfers .
De andere files zijn genoemd naar de laatste string met extensie.

Heb in excel volgende macro:

Sub RenameFiles()
'Updateby20141124
Dim xDir As String
Dim xFile As String
Dim xRow As Long
With Application.FileDialog(msoFileDialogFolderPicker)
.AllowMultiSelect = False
If .Show = -1 Then
xDir = .SelectedItems(1)
xFile = Dir(xDir & Application.PathSeparator & "*")
Do Until xFile = ""
xRow = 0
On Error Resume Next
xRow = Application.Match(xFile, Range("A:A"), 0)
If xRow > 0 Then
Name xDir & Application.PathSeparator & xFile As _
xDir & Application.PathSeparator & Cells(xRow, "B").Value
End If
xFile = Dir
Loop
End If
End With
End Sub


Bij uitvoeren macro duid ik de locatie aan van de files.
Alle files die ik niet meer nodig heb worden hernoemd (dus zit hier met 2500 files die hernoemd zijn (elk een cijfer), maar de files die ik nodig heb zijn overgeslagen.

Dit is de structuur van mijn excellijst met 2 kolommen:

Afbeeldingslocatie: https://preview.ibb.co/gRJAyQ/excel.jpg

Na het uitvoeren van de macro worden de 4 6 8 hernoemd in de folder, de andere files blijven onaangeroerd.

[ Voor 10% gewijzigd door ITS PLUS op 21-06-2017 00:48 ]


Acties:
  • 0 Henk 'm!

  • The_Vice
  • Registratie: Augustus 2002
  • Laatst online: 24-09 22:04
Ik denk dat er ergens een regel -1 dan wel +1 moet worden gezet (zonder naar je code te hebben gekeken)
Wellicht alleen de (on)even rijen laten renamen, of gewoon alles, daarna op bestand type sorteren en goede eruit kopiëren?

Ik zou nog even op de sheet blijven, en de macro overslaan:
Dan in kolom C, ="ren "& A1 & " " & B1, en dan doorslepen.
krijg je voor regel
1: ren U001...997 ______ blabla1.xslx
2: ren U001...blabla1 ___ 4
  • dat (kolom C) kopiëren naar notepad,
  • opslaan als "hernoem.bat" in je kopie/backup folder en dan uitvoeren.

[ Voor 5% gewijzigd door The_Vice op 21-06-2017 01:09 ]


Acties:
  • 0 Henk 'm!

  • Killah_Priest
  • Registratie: Augustus 2001
  • Laatst online: 10:36
ITS PLUS schreef op woensdag 21 juni 2017 @ 00:43:
Is idd een eenmalige actie wegens verkeerdelijk gelopen syncsoftware.

Heb het geprobeerd met excel mbv VBA macro, maar er lukt nog iets niet.

Heb een excel gemaakt met 2 kolommen,
in de linkse kolom staat de huidige bestandsnaam
in de rechterkolom staat de nieuwe bestandsnaam.

Aangezien ik de helft van de files niet nodig heb, heb ik die laten hernoemen naar oplopende cijfers .
De andere files zijn genoemd naar de laatste string met extensie.

Heb in excel volgende macro:

Sub RenameFiles()
'Updateby20141124
Dim xDir As String
Dim xFile As String
Dim xRow As Long
With Application.FileDialog(msoFileDialogFolderPicker)
.AllowMultiSelect = False
If .Show = -1 Then
xDir = .SelectedItems(1)
xFile = Dir(xDir & Application.PathSeparator & "*")
Do Until xFile = ""
xRow = 0
On Error Resume Next
xRow = Application.Match(xFile, Range("A:A"), 0)
If xRow > 0 Then
Name xDir & Application.PathSeparator & xFile As _
xDir & Application.PathSeparator & Cells(xRow, "B").Value
End If
xFile = Dir
Loop
End If
End With
End Sub


Bij uitvoeren macro duid ik de locatie aan van de files.
Alle files die ik niet meer nodig heb worden hernoemd (dus zit hier met 2500 files die hernoemd zijn (elk een cijfer), maar de files die ik nodig heb zijn overgeslagen.

Dit is de structuur van mijn excellijst met 2 kolommen:

[afbeelding]

Na het uitvoeren van de macro worden de 4 6 8 hernoemd in de folder, de andere files blijven onaangeroerd.
Wat een hoop code voor nul resultaat in feite. In Powershell kan dit dmv enkele regels code.
Tip : gebruik een regex om de guid af te vangen, dat maakt het zoeken en de relatie met het oorspronkelijke bestand makkelijker.

Excel en vba zijn hier nou niet echt de beste tools voor.

Acties:
  • 0 Henk 'm!

  • Squ1zZy
  • Registratie: April 2011
  • Niet online
Killah_Priest schreef op woensdag 21 juni 2017 @ 08:14:
[...]


Wat een hoop code voor nul resultaat in feite. In Powershell kan dit dmv enkele regels code.
Tip : gebruik een regex om de guid af te vangen, dat maakt het zoeken en de relatie met het oorspronkelijke bestand makkelijker.

Excel en vba zijn hier nou niet echt de beste tools voor.
Volgens The_Vice wel. Ik ben wel benieuwd hoe ze dit gaan doen en in welke tijd :P

Misschien is het beter om Excel te gebruiken, wat een batch aanroept om PowerShell te starten die vervolgens cscripts aanroept. Zo zou je het in VBS kunnen doen... Het meest gebruikte scripttaal in de jaren 90.

Acties:
  • 0 Henk 'm!

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

Voor eenmalige acties waar optimalisatie niet relevant is, is de beste manier de manier die je toevallig goed kent. Als je toch wat nieuws moet leren, dan is Office VBA misschien niet de beste manier.

Brahiewahiewa in "automatisch laten hernoemen bestandsfiles" geeft de pseudocode al:
- maak lijst van alle *.rfmeta
- per %1-%2.vsmeta in die lijst hernoem je %1.file naar %2

Waar je natuurlijk even vorm en grootte van %1 in de gaten moet houden, bijv. inderdaad met een regex.

Anyway, reden dat ik reageer: "automatisch laten hernoemen bestandsfiles" als topictitel heeft ook een hernoem-actie ondergaan. 'bestandsfiles' is een tautologie. Over welk OS gaat het eigenlijk? Windows 10?


Edit, offtopic:
Squ1zZy schreef op woensdag 21 juni 2017 @ 08:30:
Misschien is het beter om Excel te gebruiken, wat een batch aanroept om PowerShell te starten die vervolgens cscripts aanroept. Zo zou je het in VBS kunnen doen... Het meest gebruikte scripttaal in de jaren 90.
Dat wordt haast een variant van C-x M-c M-butterfly :+

[ Voor 22% gewijzigd door F_J_K op 21-06-2017 08:45 ]

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


Acties:
  • 0 Henk 'm!

  • ITS PLUS
  • Registratie: Januari 2012
  • Laatst online: 30-09 10:17
Ging over windows 10;

Probleem is opgelost. Met mijn "slechte" rijen eruit te halen in de excellijst en de vba opnieuw uit te voeren zijn de juiste bestandsnamen terug.

Heb voor de test ook eens een batfile gemaakt, dit werkt ook vlotjes :).

De beste manier voor zoiets zal idd hetgeen gebruiken welke je best vertrouwt mee bent.

Als het klaar is lijkt het allemaal simpel, maar had even wat richting nodig, bedankt voor advies.

Acties:
  • 0 Henk 'm!

  • Squ1zZy
  • Registratie: April 2011
  • Niet online
F_J_K schreef op woensdag 21 juni 2017 @ 08:42:
Voor eenmalige acties waar optimalisatie niet relevant is, is de beste manier de manier die je toevallig goed kent. Als je toch wat nieuws moet leren, dan is Office VBA misschien niet de beste manier.

Brahiewahiewa in "automatisch laten hernoemen bestandsfiles" geeft de pseudocode al:
- maak lijst van alle *.rfmeta
- per %1-%2.vsmeta in die lijst hernoem je %1.file naar %2

Waar je natuurlijk even vorm en grootte van %1 in de gaten moet houden, bijv. inderdaad met een regex.

Anyway, reden dat ik reageer: "automatisch laten hernoemen bestandsfiles" als topictitel heeft ook een hernoem-actie ondergaan. 'bestandsfiles' is een tautologie. Over welk OS gaat het eigenlijk? Windows 10?


Edit, offtopic:
[...]

Dat wordt haast een variant van C-x M-c M-butterfly :+
Die kon ik nog niet :)

Vaak is het geen eenmalige actie en dat is nou juist het punt. Ook geen standaard hebben (hoe klein de omgeving ook is) ben ik zelf geen voorstander van.

Als het nog eens gebeurt en hij is er niet moet iemand anders het misschien in een andere taal bouwen en dat kost dus extra geld. Ook is het waarschijnlijk niet gedocumenteerd en zal het de volgende keer weer tijd kosten om het uit te zoeken.

Daarnaast als er wel een standaard is zoals PowerShell en er wordt een automation tool gebruikt in de toekomst (RES, Orchastrator etc) dan is het een fluitje van een cent om de huidige scripts te gebruiken en dus ook een flinke kostenbesparing.

Maar goed. Just my 2 cents :)
Pagina: 1