Jump to content

Dateinamen per Batch kürzen?


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo MCSEboard-Gemeinde!

 

Es ist mal wieder soweit, habe ein, für mich unlösbares, Problem.

Benötige eine batch, die mir Dateinamen verkürzt.

Ein System von mir generiert ".ace-Dateien" immer mit dem gleichen Schema:

 

B=Buchstabe

Z=Zahl

H=Hexadezimale Stelle (halt Zahl oder Buchstabe)

 

BEISPIEL einer dieser Dateiennamen:

 

BBZZZZBBBBHHHHHHHHHHH.ace

oder

BBZZZZZBBBBHHHHHHHHHHH.ace

Das ist der Standartfall, mit den Dateien ist alles ok.

 

Nun kommt es vor, dass unter gewissen Umständen (systemseitig, kann nicht geändert werden) die Dateien so aussehen:

BBZZZZBBBBHHHHHHHHHHH- 1.ace

oder

BBZZZZZBBBBHHHHHHHHHHH- 1.ace

 

Diese Dateien müssen bisher händisch umbenannt werden, so dass der Teil "- 1" wegfällt. Der Rest muss so bleiben wie er ist.

 

Geht sowas automatisiert per batch?

Kann man Dateien ab einem bestimmten Zeichen verkürzen, in meinem Fall der Bindestrich?

 

Vielen Dank euch!

 

Schöne Grüße

der Stefan!

Link zu diesem Kommentar

Hier gibts gleich mal ein komplettes Code Schnippselchen (ungetestet):

 

$root = "D:\Daten"
foreach($file in (get-childitem $root)){
  if($file.Name -match '-'){
     move-item $file.FullName $file.FullName.replace('- 1','')
     # alternativ folgendes:
     # move-item $file.FullName ($file.FullName[0..($file.FullName.indexof('-')-1)] -join '')+".ace"
     # noch ne alternative:
     # move-item $file.FullName ($file.FullName.substring(0,$file.FullName.indexof('-')))+".ace"
     # Wenn ich schon dabei bin um es komplett dynamisch zu machen:
     # move-item $file.FullName $file.FullName.substring(0,$file.FullName.indexof('-'))+$file.FullName.substring($file.FullName.lastindexof('.'))
  }
}

 

Achtung! Bei minus im Ordner muss man das obige noch etwas umschreiben.

$file.path+$file.name(...

bearbeitet von Dukel
Link zu diesem Kommentar

Mit cmd und einer Batch gibt das keine schöne Lösung.

 

Wie Nils schrieb, es müsste die FOR-Schleife benutzt werden, dann darin das Verzeichnis mir DIR gelesen in eine Variable, eine weitere für den geänderten Dateinamen mit set erzeugt und dann umbenant. Es geht, ist aber nicht schön, nicht effektiv.

 

PS ist shöner und effektiver.

bearbeitet von lefg
Link zu diesem Kommentar

Habe das script gerade getestet (meinen Pfad natürlich angepasst) und dann kam folgendes bei rum:

 

Get-Content : Access to the path 'C:\shell\test' is denied.

Bei c:\shell\script.ps1:2 Zeichen:30

+ foreach($file in (get-content <<<< $root)){

 

Da ich mich mit PS überhaupt gar nicht auskenne, hoffe ich, dass mir jemand weiterhelfen kann... ich kann nur sagen, dass Dateisystem-Zugriffrechte auf dieses Verzeichnis vorhanden sind.

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...