Hét vraag- en antwoordplatform van Nederland

Voordat ik een programma opstart moet er een naamswijziging plaats vinden op 2 bestanden. Hoe doe ik dit via een .bat?

Hieronder een voorbeeld, het gaat niet om msn.

@echo off

====
<=== Hier moet een bestand van naam gewijzigd worden

===

start "Messenger" "C:\Program Files\Windows Live\Messenger\msnmsgr.exe"
timeout /T 10

Verwijderde gebruiker
13 jaar geleden
892

Heb je meer informatie nodig om de vraag te beantwoorden? Reageer dan hier.

Het beste antwoord

Naast de aanhalingstekens (zie Cryo) zou ik ook nog checken of het bestand bestaat:

@echo off
If Exist "C:\Program Files\WhereIsIt\bestand.ext" rename "C:\Program Files\WhereIsIt\bestand.ext" nieuwenaam.ext

Toegevoegd na 39 seconden:
Dit gebruik ik zelf zo doorgaans...
(Lees meer...)
rose
13 jaar geleden
Verwijderde gebruiker
13 jaar geleden
Thnx, het bestaat want ik heb het zelf aangemaakt :) Maar is wel een goeie.
Cryofiel
13 jaar geleden
Hmm - *waarom* moet je controleren of het bestand bestaat? In jouw geval doe je niets als het bestand niet bestaat. In mijn geval probeer je toch de naam te veranderen, maar dat zal niet lukken - je krijg een foutmelding, maar verder is het resultaat hetzelfde. Die foutmelding gooi ik meestal weg door achter het ren-commando het volgende toe te voegen:       >/dev/nul 2>&1 Dit zorgt ervoor dat zowel de gewone uitvoer van het ren-commando als eventuele foutmeldingen "in het bittenputje" worden gegooid.
rose
13 jaar geleden
Cryo, ik schreef ook niet 'je moet', maar 'ik zou'. Ik ken dat kopieren naar een nuldevice wel (>nul is meestal afdoende), maar zoals Jelle opmerkt, controleren is netter. En Raamklaza, als je het er nu inzet, kom je niet voor verrassingen te staan als je je code ooit in een andere situatie hergebruikt.
Cryofiel
13 jaar geleden
@rose:
Oeps, ja, inderdaad, ik heb een fout gemaakt. Die /dev/nul komt van Linux en had /dev/null moeten zijn. In DOS / Windows is het inderdaad "gewoon" nul . @jelle:
Vanzelfsprekend heb je helemaal gelijk. Het is inderdaad netter. Aan de andere kant moet je je code ook zodanig maken, dat het niet makkelijk "stuk" gaat. Met het if-statement moet je twee keer dezelfde FQN intypen. Best kans dat dat misgaat zodra je iets moet wijzigen. Als je het dan écht netjes wilt doen, moet je het volgende typen (code is niet gecontroleerd, dus ymmv):       FILE_OLD="C:\Program Files\WhereIsIt\bestand.ext"
      FILE_NEW="nieuwenaam.ext"
      if exist "$FILE_OLD" ren "$FILE_OLD" "$FILE_NEW"
      unset FILE_OLD
      unset FILE_NEW En eigenlijk moet je dan ook eerst nog controleren of FILE_NEW niet al bestaat. Waarbij je dan zelf het pad en de bestandsnaam van FILE_NEW mag gaan samenvoegen. Voor je het weet heb je 30 regels code nodig...
rose
13 jaar geleden
Even je tanden laten zien, Cryo?
Cryofiel
13 jaar geleden
Hihi, nee, eerder zoete oude herinneringen.

Andere antwoorden (3)

Dat kan met het Dos commando 'ren' of 'rename'.
REN [drive:][path][directoryname1 | filename1] [directoryname2 | filename2]
(Lees meer...)
Verwijderde gebruiker
13 jaar geleden
rename c:\chope hope
(Lees meer...)
Verwijderde gebruiker
13 jaar geleden
Bij het veranderen van de naam van een bestand, kun je het beste aanhalingstekens rond de bestandsnaam zetten. Dit is NODIG bij bestanden die spaties of speciale tekens in de naam hebben; bij bestanden die dat niet hebben, zijn de aanhalingstekens niet nodig, maar nog wel toegestaan. Het veiligste is daarom, ze simpelweg altijd te gebruiken.

Jouw .bat wordt dan:

@echo off
ren "C:\map 1\nog iets\oude naam.abc" "nieuwe naam.abc"

Als je het bestand ook nog ergens anders heen wilt verplaatsen, moet je move gebruiken in plaats van ren .
(Lees meer...)
Cryofiel
13 jaar geleden

Weet jij het beter..?

Het is niet mogelijk om je eigen vraag te beantwoorden Je mag slechts 1 keer antwoord geven op een vraag Je hebt vandaag al antwoorden gegeven. Morgen mag je opnieuw maximaal antwoorden geven.

0 / 5000
Gekozen afbeelding