Een script maken om automatisch te hernoemen

Pagina: 1
Acties:

Vraag


  • cobo
  • Registratie: December 2012
  • Laatst online: 20-05 19:10

cobo

I’m not make it, I create it

Topicstarter
Nu gebruik ik voor het hernoemen van bestanden die ik met mijn dvr recorder opneem Advanced Renamer. Nu werkt dit programma goed voor wat hij moet doen. Alleen met dit programma kan je geen script maken die automatisch kan laten starten. Dit moet ik nu handmatig doen.

Nu wil ik hiervoor een script maken alleen mijn kennis is hiervan beperk. Ik zat te denken om dit met cmd command of PowerShell te maken. Ik heb op google gezocht en hierin lijkt PowerShell beter geschikt te zijn. Alleen ik kan de juiste commando's niet vinden wat ik nodig heb.

Wat ik wil heb ik hieronder in de juiste volgorde geschreven hoe de script moet werken

Begin met ‘’ 09-23 20-25-00_ RTL 4 Expeditie Robinson S21E08 ‘’
Toevoeging ‘ 2021- ’
Uitkomst ‘’ 2021-09-23 20-25-00_ RTL 4 Expeditie Robinson S21E08 ‘’
Verplaats gedeelte na _
Uitkomst ‘’ RTL 4 Expeditie Robinson S21E08_ 2021-09-23 20-25-00 ‘’
Verplaatsen naar nieuwe map
Eindig met ‘’ RTL 4 Expeditie Robinson S21E08_ 2021-09-23 20-25-00 ‘’

Nu zal het fijn zijn als er iemand mij hiermee op weg kan helpen

Beste antwoord (via cobo op 10-10-2021 18:20)


  • downtime
  • Registratie: Januari 2000
  • Niet online

downtime

Everybody lies

Zoiets? Natuurlijk wel even naar eigen smaak aanpassen.

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
# Alleen bedoeld als voorbeeld om een test te kunnen doen

$TestBestanden = @(
    '09-23 20-25-00_ RTL 4 Expeditie Robinson S21E11.pvr',
    '09-16 20-25-00_ RTL 4 Expeditie Robinson S21E10.pvr',
    '09-09 20-25-00_ RTL 4 Expeditie Robinson S21E09.pvr',
    '09-02 20-25-00_ RTL 4 Expeditie Robinson S21E08.pvr',
    '09-30 20-25-00_ RTL 4 Expeditie Robinson S21E12.pvr'
)

foreach ($TestBestand in $TestBestanden) {
    $NieuwBestand = Join-Path -Path 'C:\PVR\NieuweBestanden' -ChildPath $TestBestand
    Set-Content -Path $NieuwBestand -Value $null
}

# De relevante code

$NieuweBestanden = Get-ChildItem -Path 'C:\PVR\NieuweBestanden' -File -Filter '*.pvr'
$VerplaatsenNaar = 'C:\PVR\BestandenNaRename'

foreach ($Bestand in $NieuweBestanden) {
    $Bestandsdelen = $Bestand.BaseName -split '_ '
    $VerplaatsteBestand = Join-Path -Path $VerplaatsenNaar -ChildPath ('{0}_ 2021-{1}{2}' -f $Bestandsdelen[1], $Bestandsdelen[0], $Bestand.Extension)
    Move-Item -Path $Bestand.FullName -Destination $VerplaatsteBestand
}

Alle reacties


  • thomasmoors
  • Registratie: September 2009
  • Laatst online: 03-05 12:30
Als je tekst wil matchen dan kun je naar mijn mening het best reguliere expressies (regex) gebruiken in je script.

  • anandus
  • Registratie: Februari 2001
  • Niet online
Misschien kan je Power Renamer gebruiken?
https://docs.microsoft.co...ows/powertoys/powerrename

"Always remember to quick save" - Sun Tzu


  • cobo
  • Registratie: December 2012
  • Laatst online: 20-05 19:10

cobo

I’m not make it, I create it

Topicstarter
@anandus Van Power Renamer kan je ook geen script maken net zo als Advanced Renamer. En daar ben ik wel op zoek naar

Acties:
  • Beste antwoord
  • 0 Henk 'm!

  • downtime
  • Registratie: Januari 2000
  • Niet online

downtime

Everybody lies

Zoiets? Natuurlijk wel even naar eigen smaak aanpassen.

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
# Alleen bedoeld als voorbeeld om een test te kunnen doen

$TestBestanden = @(
    '09-23 20-25-00_ RTL 4 Expeditie Robinson S21E11.pvr',
    '09-16 20-25-00_ RTL 4 Expeditie Robinson S21E10.pvr',
    '09-09 20-25-00_ RTL 4 Expeditie Robinson S21E09.pvr',
    '09-02 20-25-00_ RTL 4 Expeditie Robinson S21E08.pvr',
    '09-30 20-25-00_ RTL 4 Expeditie Robinson S21E12.pvr'
)

foreach ($TestBestand in $TestBestanden) {
    $NieuwBestand = Join-Path -Path 'C:\PVR\NieuweBestanden' -ChildPath $TestBestand
    Set-Content -Path $NieuwBestand -Value $null
}

# De relevante code

$NieuweBestanden = Get-ChildItem -Path 'C:\PVR\NieuweBestanden' -File -Filter '*.pvr'
$VerplaatsenNaar = 'C:\PVR\BestandenNaRename'

foreach ($Bestand in $NieuweBestanden) {
    $Bestandsdelen = $Bestand.BaseName -split '_ '
    $VerplaatsteBestand = Join-Path -Path $VerplaatsenNaar -ChildPath ('{0}_ 2021-{1}{2}' -f $Bestandsdelen[1], $Bestandsdelen[0], $Bestand.Extension)
    Move-Item -Path $Bestand.FullName -Destination $VerplaatsteBestand
}

Acties:
  • 0 Henk 'm!

  • cobo
  • Registratie: December 2012
  • Laatst online: 20-05 19:10

cobo

I’m not make it, I create it

Topicstarter
@downtime bedankt voor je hulp. Na een paar aanpassingen werkt deze script ook bij mij. Nu moet ik alleen kijken of deze script automatisch op een bepaalde tijdstip laat ingaan.

Acties:
  • 0 Henk 'm!

  • HKLM_
  • Registratie: Februari 2009
  • Laatst online: 21:19
cobo schreef op zondag 26 september 2021 @ 13:58:
@downtime bedankt voor je hulp. Na een paar aanpassingen werkt deze script ook bij mij. Nu moet ik alleen kijken of deze script automatisch op een bepaalde tijdstip laat ingaan.
Dat kan je makelijk regelen via de task scheduler van windows :)

Voorbeeldje: https://blog.netwrix.com/...ipts-with-task-scheduler/

[ Voor 13% gewijzigd door HKLM_ op 26-09-2021 17:31 ]

Cloud ☁️


Acties:
  • 0 Henk 'm!

  • cobo
  • Registratie: December 2012
  • Laatst online: 20-05 19:10

cobo

I’m not make it, I create it

Topicstarter
@HKLM_ Ik heb het nu opgelost met een timer in het script toe te voegen. De timer heb ik nu op 24 uur staan.
Ik vind mij oplossing nogal lomp. Eigenlijk wil ik het zo hebben als er een nieuw bestand gedicteerd wordt dat dan het programma dan bezig gaat.

Mijn code is nu zo:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#Bestanden rename met lus 24 uur

while (1 -eq 1 ){
Get-Date

$NieuweBestanden = Get-ChildItem -Path 'H:\Recordings' -File -Filter '*.ts'
$VerplaatsenNaar = 'H:\DD Plex'

foreach ($Bestand in $NieuweBestanden) {
    $Bestandsdelen = $Bestand.BaseName -split '_'
    $VerplaatsteBestand = Join-Path -Path $VerplaatsenNaar -ChildPath ('{0}_ 2021-{1}{2}' -f $Bestandsdelen[1], $Bestandsdelen[0], $Bestand.Extension)
    Move-Item -Path $Bestand.FullName -Destination $VerplaatsteBestand
}
start-sleep -seconds 86400
}

[ Voor 52% gewijzigd door cobo op 26-09-2021 18:08 . Reden: Code toegevoegd ]


Acties:
  • +2 Henk 'm!

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

Doe geen timer, laat het lopen via de scheduler / taakplanner. Dat is een stuk robuuster.

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


Acties:
  • 0 Henk 'm!

  • HKLM_
  • Registratie: Februari 2009
  • Laatst online: 21:19
cobo schreef op zondag 26 september 2021 @ 18:05:
@HKLM_ Ik heb het nu opgelost met een timer in het script toe te voegen. De timer heb ik nu op 24 uur staan.
Ik vind mij oplossing nogal lomp. Eigenlijk wil ik het zo hebben als er een nieuw bestand gedicteerd wordt dat dan het programma dan bezig gaat.

Mijn code is nu zo:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#Bestanden rename met lus 24 uur

while (1 -eq 1 ){
Get-Date

$NieuweBestanden = Get-ChildItem -Path 'H:\Recordings' -File -Filter '*.ts'
$VerplaatsenNaar = 'H:\DD Plex'

foreach ($Bestand in $NieuweBestanden) {
    $Bestandsdelen = $Bestand.BaseName -split '_'
    $VerplaatsteBestand = Join-Path -Path $VerplaatsenNaar -ChildPath ('{0}_ 2021-{1}{2}' -f $Bestandsdelen[1], $Bestandsdelen[0], $Bestand.Extension)
    Move-Item -Path $Bestand.FullName -Destination $VerplaatsteBestand
}
start-sleep -seconds 86400
}
Maar na je start-sleep gebeurt er nu toch niks?, via een geplande taak kan je opgeven dat deze op bepaald tijden, herhaling etc moet draaien. Tevens werkt dat ook na een reboot :+

Cloud ☁️


Acties:
  • 0 Henk 'm!

  • cobo
  • Registratie: December 2012
  • Laatst online: 20-05 19:10

cobo

I’m not make it, I create it

Topicstarter
@HKLM_ Zoals het script nu is geschreven werkt hij. Nadat hij klaar is met rond 1 gaat hij in pauze en na 24 uur begint hij weer. Dit heb ik getest met 5 sec. Tevens kan ik dit controleren met de tijdstamppunt die ook in het script zit.

Ik ga zeker kijken of ik met de scheduler van Windows het script mooier kan krijgen.
Pagina: 1