Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

bestanden renamen naar bestandsnaam met datum erin

Pagina: 1
Acties:

  • jos_zwa
  • Registratie: Januari 2001
  • Laatst online: 15-04-2019

jos_zwa

Flying Dutchman

Topicstarter
Ik heb een heleboel bestanden met in de bestandsnaam een datum. Deze datum is altijd een vast formaat dd-mm-YYYY maar IN de bestandsnaam staat deze op verschillende plekken b.v.

blaat_10-10-2010_blaat.mp3
10-10-2010_blaat_blaat.mp3

Nu wil ik alle bestanden tegelijk renamen naar een vast formaat b.v.

nieuwe_naam_10-10-2010.mp3

uiteraard is de datum steeds bij elk bestand anders.

Is dit met 1 of ander tooltje ook mogelijk?

Nikon D60 + AF-S DX 18-105mm G VR


  • DukeBox
  • Registratie: April 2000
  • Laatst online: 00:07

DukeBox

loves wheat smoothies

Welk OS ?

Duct tape can't fix stupid, but it can muffle the sound.


  • jjbstolk
  • Registratie: September 2001
  • Laatst online: 22:15
Je kan http://www.advancedrenamer.com/ eens bekijken daarin zitten veel opties voor rename, filter e.d.

  • jos_zwa
  • Registratie: Januari 2001
  • Laatst online: 15-04-2019

jos_zwa

Flying Dutchman

Topicstarter

Nikon D60 + AF-S DX 18-105mm G VR


  • DukeBox
  • Registratie: April 2000
  • Laatst online: 00:07

DukeBox

loves wheat smoothies

Met een simpel for loopje en wat 'inixutils' kan je dat wel voor elkaar krijgen via de commandline.
Eerst de datum eruit filteren en renamen met die ervoor.
Maar zoals hier boven al staat, zal het met een gui makkelijker zijn.

Duct tape can't fix stupid, but it can muffle the sound.


  • HeSitated
  • Registratie: April 2009
  • Laatst online: 26-10 12:12
Stukje Powershell?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Clear-Host
$path = "C:\Users\Test\"
$pattern = "(.*)(\d\d-\d\d-\d\d\d\d)(.*)"
Foreach ($file in Get-Childitem $path)
{
    if($file -match $pattern)
    {
        $originalName = $file.Name
        $ext = [System.IO.Path]::GetExtension($originalName)
        $part = $originalName.Substring(0, $originalName.Length - $ext.Length)
        $parts = [regex]::Matches($part, $pattern)
        $groups = $parts.Item(0).Groups
        $first = $groups.Item(1).ToString().Trim( "_" ).Trim()
        $third = $groups.Item(3).ToString().Trim( "_" ).Trim()
        $date = $groups.Item(2)
        $newName=""
        if($first.Length -gt 0) { $newName = $first }
        if($third.Length -gt 0) { $newName = [String]::Concat( $newName, "_", $third ) }
        $newName = [String]::Concat( $newName, "_", $date, $ext )
        $originalName = [System.IO.Path]::Combine($path, $originalName)
        $newName = [System.IO.Path]::Combine($path, $newName)
        
        if( !([System.IO.File]::Exists($newName)))
        {
            Rename-Item $originalName -NewName $newName -WhatIf
        }
    }
}


Is vast voor verbetering vatbaar.... :)

  • DukeBox
  • Registratie: April 2000
  • Laatst online: 00:07

DukeBox

loves wheat smoothies

^ ondanks dat het meer code is is het wel een stuk makkelijker dan met batch.
code:
1
2
3
4
5
6
if %1#==grep# echo %2 | grep -o "[0-9][0-9]-[0-9][0-9]-[0-9][0-9][0-9][0-9]" & exit
for %%1 in (*.mp3) do (
  for /f %%a in ('call %0 grep %%1') do (
  set str=%%%1:%%a_=%
  rename "%%1" "%%a_%str%"
))

[ Voor 17% gewijzigd door DukeBox op 07-06-2012 20:11 ]

Duct tape can't fix stupid, but it can muffle the sound.


  • Pjottski
  • Registratie: Maart 2001
  • Laatst online: 18:53

Pjottski

🦍 Monkey 🦍

In Total Commander zit ook een multi-rename functie. Dit in combinatie met een reguliere expressie zal een hoop mogelijk maken. Nadeel is wel dat het 1 directory per keer kan pakken.

Dit is mijn uitspraak en daar zult u het mee moeten doen


  • HeSitated
  • Registratie: April 2009
  • Laatst online: 26-10 12:12
DukeBox schreef op donderdag 07 juni 2012 @ 20:03:
^ ondanks dat het meer code is is het wel een stuk makkelijker dan met batch.
code:
1
2
3
4
5
6
if %1#==grep# echo %2 | grep -o "[0-9][0-9]-[0-9][0-9]-[0-9][0-9][0-9][0-9]" & exit
for %%1 in (*.mp3) do (
  for /f %%a in ('call %0 grep %%1') do (
  set str=%%%1:%%a_=%
  rename "%%1" "%%a_%str%"
))
Na 4DOS/4OS heb ik nooit meer iets gedaan met batches.... :'(

Dus ik heb grote bewondering voor je... _/-\o_

  • DukeBox
  • Registratie: April 2000
  • Laatst online: 00:07

DukeBox

loves wheat smoothies

Probleem is dat ik het telkens voor elkaar krijg.. anders was ik al lang overgestapt op vbs of powershell ;)

Duct tape can't fix stupid, but it can muffle the sound.


  • jos_zwa
  • Registratie: Januari 2001
  • Laatst online: 15-04-2019

jos_zwa

Flying Dutchman

Topicstarter
thnx allemaal! ga er mee aan de slag!

Nikon D60 + AF-S DX 18-105mm G VR


  • downtime
  • Registratie: Januari 2000
  • Niet online

downtime

Everybody lies

Pjottski schreef op donderdag 07 juni 2012 @ 20:11:
In Total Commander zit ook een multi-rename functie. Dit in combinatie met een reguliere expressie zal een hoop mogelijk maken. Nadeel is wel dat het 1 directory per keer kan pakken.
Met de multi-rename van Total Commander is het verbluffend simpel.

Inhoud van de velden Filename en Extension doet er niet toe. Zet de vinkjes bij RegEx en Subst aan. Vul dan in het Search veld in:
code:
1
([0-9]{2}-[0-9]{2}-[0-9]{4})

(ofwel zoeken op patroon van 2 cijfers, een minteken, 2 cijfers, nog een minteken, en dan 4 cijfers)

In het Replace veld voer je in:
code:
1
Nieuwe_naam_$1


En je kunt best meer dan 1 directory tegelijk doen middels de Search functie, dan Feed to Listbox gebruiken om een lijst van bestanden te krijgen die je kunt selecteren en renamen.
Pagina: 1