Skriptsprache für automatisches Umbenennen von Dateien unter Windows 10


Status
Dieses Thema wurde gelöst! Zur Lösung gehen…

Sempervivum

Erfahrenes Mitglied
#1
Hallo,
ich möchte unter Windows 10 diverse Dateien automatisch umbenennen nach verschiedenen Kriterien. Beispiel: Für alle Dateien xyz.afphoto die zugehörige xyz.jpg in xyz-affinity.jpg umbenennen. Geht wahrscheinlich schon mit Batch bzw. CMD aber ich suche eine Skriptsprache, die angenehmer und weniger kryptisch zu programmieren ist. Ich dachte schon daran, es mit PHP zu machen, aber das hat den Nachteil, dass dazu ein Webserver laufen muss.
Welche Skriptsprache ist da geeignet?
Beste Grüße - Ulrich
 

zerix

Hausmeister
Moderator
#2
Hi,

ich persönlich bevorzuge immer erst Mittel die schon mit geliefert werden, bevor ich was anderes installieren würde. In deinem Fall würde ich schauen, wie ich es der Powershell lösen könnte.

Viele Grüße
Sascha
 

ComFreek

Mod | @comfreek
Moderator
#5
Ich tendiere auch zu PowerShell. Gefühlt benutzt keiner mehr VBScript für neue Projekte, es ist halt nicht mehr "hip". Aber ich kann da auch sehr biased sein, vllt. hat @Yaslaw dazu mehr :)

Übrigens kannst du PowerShell auch auf anderen Betriebssystemen laufen lassen mittlerweile - MS hat da cross-platform Support herausgebracht.

Hier ist auch ein PowerShell Oneliner für dein Problem:
Code:
Get-ChildItem *.afphoto | % {
  Move-Item ($_.BaseName + '.jpg') ($_.BaseName + '-affinity.jpg')
}
Hat VBScript Pipes? Pipes sind oftmals nützlich in Shellsprachen. Im Gegensatz zu UNIX Pipes sind PowerShell Pipes auch objektorientiert und getypt! D.h. nie wieder formatierten Text aus Pipes extrahieren, sondern direkt auf Eigenschaften wie oben im Code zugreifen.
 
#6
VBScript ist alt und verwandt mit VB6/VBA. Ich glaube nbicht das es Pipes hat.

Wenn du beides nicht kennst, rate ich dir, PowerShell zu lernen.
 
Zuletzt bearbeitet:
#8
Ich dachte schon daran, es mit PHP zu machen, aber das hat den Nachteil, dass dazu ein Webserver laufen muss.
Falls Du z. B. xampp installiert und für PHP den Dienst aktiviert hast, läuft es ja ohnehin, wie so viele andere Dienste auch, im Hintergrund. Ansonsten wäre es mit 2 Klicks auch aktiviert. Dass der WebServer als solches ein Nachteil ist, sehe ich nicht so; die paar Kilo sollten doch immer über sein :)
 

Technipion

Erfahrenes Mitglied
#9
die paar Kilo sollten doch immer über sein
Ja gut, dann werfe ich mal noch Python in den Raum :D

Python:
import sys
from pathlib import Path

p = Path('.') # öffne aktuelles Arbeitsverzeichnis
matches = p.glob('*.afphoto') # suche alle .afphoto-Dateien

# Gib Output auf Kommandozeile aus:
output = sys.stdout
# Oder logge in eine Datei:
#output = open('rename-log.txt', 'w')

for fname in matches:
    afphotoFile = p / fname # file handle für .afphoto-Datei
    
    jpgFile = afphotoFile.with_suffix('.jpg') # zugehörige .jpg-Datei

    if not jpgFile.is_file():
        print('ERROR, {}: No file named {}'.format(afphotoFile, jpgFile), file=output)
        continue
    
    newName = '{}-affinity.jpg'.format( jpgFile.stem ) # baue Name aus Dateistamm
    jpgFile.rename( newName ) # benenne Datei um
    
    print(afphotoFile, ':\t\t', jpgFile, '\t\t-> ', newName,
          sep='', file=output) # log

output.close()
 
Status
Dieses Thema wurde gelöst! Zur Lösung gehen…

Neue Beiträge