Toon posts:

[Batch] Files in div. mappen renamen vanuit een textbestand?

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

Verwijderd

Topicstarter
Beste mensen,

Vandaag kreeg ik een vraag waar ik helaas eigenlijk weinig van afweet, maar gebrand ben toch een oplossing voor te zullen vinden (ik heb een hekel aan falen namelijk :) ).

Ik heb een CD met enkele duizenden bestanden in diverse mappen.
Alle bestanden hebben nu nog een naam zoals b.v. 0000001.txt, 0000002.txt, 0000003.txt enz.

Ook heb ik een tekstbestand dat eruit ziet als volgt (met een tabscheidingsteken tussen de kolommen zeg maar):

nieuwebestandsnaam1 d:\map1\0000001.txt
nieuwebestandsnaam2 d:\map1\0000002.txt
nieuwebestandsnaam3 d:\map1\0000003.txt


Nu wil ik een batchscript schrijven wat aan de hand van de gegevens in het tekstbestand alle oude bestandsnamen vervangt met de nieuwe bestandsnaam (en de extensie hetzelfde houd).
Op zich ben ik wel thuis (nou ja dat was ik, eerlijk gezegd, het is alweer een hele tijd geleden dat ik me hiermee bezig gehouden heb) met de aloude dos-commando's, maar dit gaat me voor nu toch net ff ietsjes te ver.

Nu heb ik hiermee gewoon een (erg groot) duwtje in de rug mee nodig, bij mij is het begin altijd het moeilijkst :)
Zou iemand mij hiermee op weg kunnen helpen misschien, of misschien heeft iemand al een oplossing voor me, ik hoor het graag!


Molski.

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-01 23:51

NMe

Quia Ego Sic Dico.

Het zou fijn zijn als je de volgende keer onze stickies doorleest voor je een topic opent. ;)

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.


Verwijderd

Topicstarter
Oops!

Pardon, ik weet waar het thuis hoort, weet niet precies hoe dit fout is gegaan, waarschijnlijk beetje last van een zonnesteek ;)

  • SilentStorm
  • Registratie: November 2000
  • Laatst online: 27-01 23:32

SilentStorm

z.o.z

Ik vrees dat ik even geen tijd heb voor een werkend voorbeeld (mocht je problemen hebben dan lukt dat vanavond missschien), maar ik denk dat je er wel uitkomt als je
code:
1
for/?
eens aandachtig doorleest.

Localhost is where the heart is


  • Krypt
  • Registratie: April 2000
  • Laatst online: 12-02 20:18
Met 1 for statement kun je het voor elkaar krijgen.

For /f "tokens=1,*" %x in (lijstje.txt) do ren %x %y

lijstje.txt wordt geopend en uitgelezen. Elke regel wordt gesplitst; wat voor de spatie komt komt in variabele %x en wat na de spatie komt, komt in variabele %y. Dan met 'ren' wordt de naam in %x veranderd in %y. Moet je in je lijstje in de eerste kolom wel de extentie meegeven.

Pvouput live


  • SilentStorm
  • Registratie: November 2000
  • Laatst online: 27-01 23:32

SilentStorm

z.o.z

Op verzoek heb ik er ook nog even naar gekeken. De oplossing van Krypt zit in de buurt, maar mist net een paar essentiele factoren (waar ik zelf ook nog even naar had kunnen pointen, in retrospect, al staat het er wel bij..)

Anyway, de code:

code:
1
For /f "tokens=1,*" %%x in (tabel.txt) do @ren %%y %%x.txt


Waar het verkeerd ging is op 2 punten:
• in batch files moeten er in een dergelijke for lus altijd 2 %-tekens worden gebruikt omdat ze anders niet als variabelen worden herkent
• de variabelen stonden verkeerd en om.

Een extra .txt aan het eind zorgt ervoor dat die extensie ook wordt meegenomen in de nieuwe bestandsnaam. Enjoy :)

[ Voor 2% gewijzigd door SilentStorm op 14-06-2006 17:47 . Reden: typo, 2 letters ]

Localhost is where the heart is


  • Krypt
  • Registratie: April 2000
  • Laatst online: 12-02 20:18
Ochja.. beetje eigen inzicht mag ook :Y)

En ik neem de moeite nog niet eens om zo'n simpel for statement in een batchfile te gieten...

Moet me er toch even uitlullen he :)

[ Voor 3% gewijzigd door Krypt op 14-06-2006 17:46 ]

Pvouput live

Pagina: 1