[Excel] Hoe in een batch bestandsnamen vernoemen?

Pagina: 1
Acties:
  • 763 views sinds 30-01-2008
  • Reageer

  • Gorgelmuil
  • Registratie: Juni 2004
  • Laatst online: 05-06 09:06
Het zit zo:


Ik heb +/-3500 bestandjes. Deze hebben allemaal een nummer. Die nummers heb ik ook in een excel sheet, met de kolom ernaar wat de nummers moeten worden. Er zit geen regelmaat in, dus er zou in die lijst gekeken moeten worden hoe de nieuwe naam moet worden.

Is hier een tooltje voor? Of een scriptje?

OS waar het op draait maakt me niet uit ;)

  • ThunderNet
  • Registratie: Juni 2004
  • Laatst online: 10:03

ThunderNet

Flits!

In excel? met VBA? :)

Heb je liever vooraf, of achteraf, dat ik zeg dat ik geen flauw idee heb wat ik doe?


  • Gorgelmuil
  • Registratie: Juni 2004
  • Laatst online: 05-06 09:06
Ok, maar kun je daarmee dan bestanden aanroepen en van naam aanpassen?

  • Outerspace
  • Registratie: Februari 2002
  • Laatst online: 11:58

Outerspace

Admin General Chat

AFX Ghey Edition by HlpDsK

Gewoon in Excel dmv een VBA code? Anders kan je nog wel bepaalde tooling gebruiken :) Dit is wel te vinden met de juiste zoektermen

Wauw, een sig!


  • ThunderNet
  • Registratie: Juni 2004
  • Laatst online: 10:03

ThunderNet

Flits!

Gorgelmuil schreef op woensdag 14 november 2007 @ 10:38:
Ok, maar kun je daarmee dan bestanden aanroepen en van naam aanpassen?
Ja :) dat kan gewoon.

Heb je liever vooraf, of achteraf, dat ik zeg dat ik geen flauw idee heb wat ik doe?


  • Gorgelmuil
  • Registratie: Juni 2004
  • Laatst online: 05-06 09:06
Dát ja, juiste zoektermen. Daar gaat het wel vaker mis ;)

Dank voor de tip, ik ga verder zoeken!

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB/AI

Front verplichte underscores

Of een scriptje?
Dat scriptje zit nu in je hoofd, de truc is om het even te bouwen. Met Shell() kan je een willekeurige applicatie aanroepen. Maar het kan veel makkelijker, door vanuit je Excel sheet een batchbestandje te genereren met wat hulpkolommen. Aan de hand van het nummer een bestandsnaam maken, rename ervoor en de nieuwe naam er achter zetten. Copypaste naar de commandline of een .cmd bestandje en je bent klaar. Maar een standaardtool: nee, of niet met minder moeite (qua parametrisering) dan zelfbouw. Je zult aan de gang moeten gaan.

CSA => OFF.
Edit: ik ben dus traag. Maar zie dus mijn voorbeeld voor een mogelijk aanvalsplan :P
Als je vastloopt denken we graag mee natuurlijk maar zo moet het volgends mij lukken. Kan "zelfs" zonder VBA, door slim gebruik het samenvoegen van tekst uit kolommen.

[ Voor 19% gewijzigd door F_J_K op 14-11-2007 10:45 ]

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


  • ThunderNet
  • Registratie: Juni 2004
  • Laatst online: 10:03

ThunderNet

Flits!

F_J_K schreef op woensdag 14 november 2007 @ 10:43:
[...]

Dat scriptje zit nu in je hoofd, de truc is om het even te bouwen. Met Shell() kan je een willekeurige applicatie aanroepen. Maar het kan veel makkelijker, door vanuit je Excel sheet een batchbestandje te genereren met wat hulpkolommen. Aan de hand van het nummer een bestandsnaam maken, rename ervoor en de nieuwe naam er achter zetten. Copypaste naar de commandline of een .cmd bestandje en je bent klaar. Maar een standaardtool: nee, of niet met minder moeite (qua parametrisering) dan zelfbouw. Je zult aan de gang moeten gaan.
Waarom zo moeilijk? Je kunt toch gewoon bezig met het FileSystemObject?

Heb je liever vooraf, of achteraf, dat ik zeg dat ik geen flauw idee heb wat ik doe?


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 10-07 15:14

Janoz

Moderator Devschuur®

!litemod

Je kunt in de colom erna iets doen met string concatenatie en zo een batch file genereren. Gewoon iets van :
= "RENAME " & A1 & " " & B1

en dit dan over alle colommen. Nu moet je alleen nog ff de resulterende colom kopieren oid in een bestandje en dan draaien. Je zult dan wek gegarandeer meoten hebben dat tussen de nieuwe namen neit de oude namen staan.

--
Hmm, al weer rijkelijk laat omdat ik ff wilde kijken in Excel wat de concateneer functie was. Blijkt dat de eigen voorbeelden uit de help (CONCATENATE("value" , " other vaule") gewoon helemaal niet werkt |:(..

[ Voor 23% gewijzigd door Janoz op 14-11-2007 10:47 ]

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB/AI

Front verplichte underscores

ThunderNet schreef op woensdag 14 november 2007 @ 10:44:
Waarom zo moeilijk? Je kunt toch gewoon bezig met het FileSystemObject?
Met .MoveFile() ben je er inderdaad ook al. Ik proefde alleen een beetje dat de topicstarter geen VBA kent en ik wilde hem dicht bij wat hij weet houden. Maar je hebt gelijk, dat is simpeler, netter en sneller.

Mea culpa

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


  • ThunderNet
  • Registratie: Juni 2004
  • Laatst online: 10:03

ThunderNet

Flits!

F_J_K schreef op woensdag 14 november 2007 @ 10:48:
[...]

Met .MoveFile() ben je er inderdaad ook al. Ik proefde alleen een beetje dat de topicstarter geen VBA kent en ik wilde hem dicht bij wat hij weet houden. Maar je hebt gelijk, dat is simpeler, netter en sneller.
Als hij toch al in VBA bezig moet :) Kun je het beter direct goed doen.

Heb je liever vooraf, of achteraf, dat ik zeg dat ik geen flauw idee heb wat ik doe?


  • Gorgelmuil
  • Registratie: Juni 2004
  • Laatst online: 05-06 09:06
Juistem, ik wordt niet gehinderd door enige kennis van VBA, dus dat gaat goed ;)

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 10-07 15:14

Janoz

Moderator Devschuur®

!litemod

mwah, ik denk dat het voor deze eenmalige actie gewoon makkelijker is om een functie in te vullen, kolom te selecteren, functie te plakken, kolom te kopieren, kolom in notepad plakken, saven als renamerun.bat en uitvoeren. Zeker als het maar eenmalig is dan zou ik niet eens de moeite nemen om uberhaupt te kijken of VBA iets zou kunnen doen. De boel opstarten kost misschien nog meer tijd ;).

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Da's wel veruit het snelste ja :) Als je niks van vba of het filesystemobject afweet ben je toch even aan het zoeken naar allerhande snax geneuzel, hoe door een range heen te lopen etc.
hoewel ik niet eens op het idee van een copy/paste naar de commandline zou komen :$
Janoz schreef op woensdag 14 november 2007 @ 10:45:
Hmm, al weer rijkelijk laat omdat ik ff wilde kijken in Excel wat de concateneer functie was. Blijkt dat de eigen voorbeelden uit de help (CONCATENATE("value" , " other vaule") gewoon helemaal niet werkt |:(..
Nou ja, hoe moet die helpfile weten dat je met een engelstalige Excel het nederlandse scheidingsteken voor parameters gebruikt :) (';' ipv ',')

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 10-07 15:14

Janoz

Moderator Devschuur®

!litemod

Ehm, misschien omdat ik de help rechtstreeks opstart vanuit Excel? Als ze die i18n zover door willen voeren, waarom houden ze dan daarmee op zodra je bij de help komt? Voorbeelden zouden gewoon moeten werken door simpel te copy pasten.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

toch eventjes een voorbeeldoplossingkje voor de lol, dat maakt het voor mensen die in de toekomst in dit topic terechtkomen na hun zoekopdracht toch wat nuttiger en het gaat tenslotte om maar 3 regels. je selecteert de kolom met oorspronkelijke namen, daarnaast bevinden zich de nieuwe. voer volgend uit (pad aanpassen om te verwijzen naar de juiste map)
Visual Basic:
1
2
3
4
5
6
7
8
9
10
Sub Herbenoemen()
  Dim BestandsNaam As Range
  
  For Each BestandsNaam In Selection
    Name _
        ("d:\" & BestandsNaam.Text) _
    As _
        ("d:\" & BestandsNaam.Offset(, 1).Text)
  Next
End Sub
Pagina: 1