Files renamen met "|" (pipe) teken?

Windows, Android, iOS, Linux, Chrome OS, ...
Ernie
Elite Poster
Elite Poster
Berichten: 998
Lid geworden op: 08 jun 2011, 04:35
Uitgedeelde bedankjes: 270 keer
Bedankt: 53 keer

Bericht

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!
Heppie NY!
Gebruikersavatar
cptKangaroo
Elite Poster
Elite Poster
Berichten: 3150
Lid geworden op: 18 dec 2004, 13:33
Locatie: 053 Aalst
Uitgedeelde bedankjes: 655 keer
Bedankt: 214 keer

Bericht

Probeer het bestand eens te renamen tijdens een 'move' command (dus aangepaste naam als destination)
Ernie
Elite Poster
Elite Poster
Berichten: 998
Lid geworden op: 08 jun 2011, 04:35
Uitgedeelde bedankjes: 270 keer
Bedankt: 53 keer

Bericht

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.
Heppie NY!
Gebruikersavatar
cptKangaroo
Elite Poster
Elite Poster
Berichten: 3150
Lid geworden op: 18 dec 2004, 13:33
Locatie: 053 Aalst
Uitgedeelde bedankjes: 655 keer
Bedankt: 214 keer

Bericht

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.
Ernie
Elite Poster
Elite Poster
Berichten: 998
Lid geworden op: 08 jun 2011, 04:35
Uitgedeelde bedankjes: 270 keer
Bedankt: 53 keer

Bericht

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
Heppie NY!
Gebruikersavatar
cptKangaroo
Elite Poster
Elite Poster
Berichten: 3150
Lid geworden op: 18 dec 2004, 13:33
Locatie: 053 Aalst
Uitgedeelde bedankjes: 655 keer
Bedankt: 214 keer

Bericht

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é.
Ernie
Elite Poster
Elite Poster
Berichten: 998
Lid geworden op: 08 jun 2011, 04:35
Uitgedeelde bedankjes: 270 keer
Bedankt: 53 keer

Bericht

cptKangaroo, bedankt voor je hulp.
Kreeg het niet voor elkaar en heb 'Bulk Rename Utility' gebruikt.
Heppie NY!
Gebruikersavatar
selder
Moderator
Moderator
Berichten: 6499
Lid geworden op: 29 jun 2005, 18:25
Locatie: Tienen
Uitgedeelde bedankjes: 95 keer
Bedankt: 698 keer

Bericht

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?
Fractal Design North • 13900KS • Asus ROG Ryuo III 240mm • Asus Z790-E • Z5 7800 c34 64GB RGB • nVidia RTX4090FE • Samsung 990 PRO 2TB • Asus ROG Swift PG42UQ 42” OLED 138Hz