Pagina 1 van 1

Files renamen met "|" (pipe) teken?

Geplaatst: 09 mei 2024, 15:41
door Ernie
Ik ben hier al een paar uur aan het zoeken hoe ik dit moet doen.

Op een samba share heb ik bestanden die in de naam een pipe hebben en windows cmdline struikelt daar over met volgende foutmelding:

Code: Selecteer alles

The filename, directory name, or volume label syntax is incorrect.
Ik heb de filenames omsloten met quotes en gebruik het ren commando

Dan in powershell (nooit gebruikt maar als oplossing gevonden) op deze manier geprobeerd:

Code: Selecteer alles

get-childitem *.mp4 | foreach (rename-item $_ $_.name.replace("|",""))
Dan krijg ik deze foutmelding:

Code: Selecteer alles

You cannot call a method on a null-valued expression.
At line:1 char:1
+ get-childitem *.mp4 | foreach (rename-item $_ $_.name.replace("|","") ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull
De bestanden staan op een Linux (Debian) container en daar maar geprobeerd (minder kennis) lukt het mij wel met een mv commando.

Kan iemand mij aub helpen om dit met een script te doen in Linux of een manier die werkt op Win10?
Tnx!

Re: Files renamen met "|" (pipe) teken?

Geplaatst: 09 mei 2024, 16:26
door cptKangaroo
Probeer het bestand eens te renamen tijdens een 'move' command (dus aangepaste naam als destination)

Re: Files renamen met "|" (pipe) teken?

Geplaatst: 09 mei 2024, 20:08
door Ernie
Hey cptKangaroo, je bedoelt toch mv <"oude naam"> <"nieuwe naam">, niet?
Zo ja, dat heb ik gedaan en werkt wel maar heb geen idee hoe ik dat in een script kan gieten.

Re: Files renamen met "|" (pipe) teken?

Geplaatst: 09 mei 2024, 21:00
door cptKangaroo
Die "rename-item" vervangen door "move-item", neem ik aan. Microsoft uitleg: move-item

Da's wel rekenend op de (waarschijnlijk kleine) kans dat het werkt binnen dezelfde folder aangezien de destination een andere naam heeft. Anders zou je er nog een subfolder kunnen tussenlappen als je bestandsnaam en folder eerst splitst, of als dat pipe character het eerste character is, vervang je dat door "\SubFolderNaam\" of zo.

Re: Files renamen met "|" (pipe) teken?

Geplaatst: 09 mei 2024, 21:48
door Ernie
Owkay, je bedoelde met Powershell...
Dat werkt idd!

Enig idee hoe dat in een loop te doen en met wildcards?

Code: Selecteer alles

get-childitem *.mp4 | foreach (move-item $_ $_.name.replace("|",""))
You cannot call a method on a null-valued expression.
At line:1 char:1
+ get-childitem *.mp4 | foreach (move-item $_ $_.name.replace("|",""))
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull

Re: Files renamen met "|" (pipe) teken?

Geplaatst: 09 mei 2024, 23:44
door cptKangaroo
Euh, die lijn code doet toch eigenlijk een foreach loop op alle .mp4 bestanden in de folder? Wat heb je gedaan dat werkt?

Zet je eigen foldernaam en wildcard in onderstaande voorbeeldje:

Code: Selecteer alles

get-childitem -path "d:\MijneMuziek\*.mp3" | foreach (move-item $_ $_.name.replace("|",""))
EDIT :: dit is uiteraard een zeer simpel voorbeeldje dus als je dit op een hele drive vol muziek (bijvoorbeeld) wil loslaten, zou ik toch eerst wat testen, hé.

Re: Files renamen met "|" (pipe) teken?

Geplaatst: 10 mei 2024, 01:46
door Ernie
cptKangaroo, bedankt voor je hulp.
Kreeg het niet voor elkaar en heb 'Bulk Rename Utility' gebruikt.

Re: Files renamen met "|" (pipe) teken?

Geplaatst: 10 mei 2024, 08:21
door selder
Kan je van die speciale tekens niet triple-escapen? Als je dat symbool als waarde wilt gebruiken en niet als syntax dacht ik dat je " " "|" " " kon doen?