v-e-o1
Goto Top

Dateinamen ändern durch Abschneiden von Zeichen

Versuche vergeblich seit Stunden, meine Dateinamen zu ändern. Hab auch schon den Vorschlag von Markus ausprobiert...gescheitert face-sad

Hallo zusammen,

ich versuche schon seit einer Weile, meine über 900 Dateinamen zu ändern.

Die Dateinamen sind wie folgt aufgebaut:

ArtNr._Beschreibung1_Beschreibung2_Beschreibung3.jpg

Die Art.-Nr. ist immer 4 Ziffern lang, der Anstieg der Ziffern ist ungleichmäßig.

Ich habe versucht, alles ab der 5 Stelle im Dateinamen abzuschneiden mit folgendem Befehl
@echo off & setlocal

Set Verzeichnis=c:\Fotos\test\*.jpg

for /f "delims=_ tokens=1-4*" %%a in ('dir %Verzeichnis% /s /b') do call :Machwas %%a %%b %%c %%d %%e  
goto :eof


:Machwas
Set ArtNr=%1
Set Beschr1=%2
Set Beschr2=%3
Set Beschr3=%4

ren %ArtNr%_%Beschr1%_%Beschr2%_%Beschr3%.jpg %ArtNr%.jpg

Es kommt die Fehlermeldung "%%a" ist an dieser Stelle syntaktisch nicht verarbeitbar.

Was mache ich falsch und/wo liegt der Fehler? Wie muss meine Befehlskette richtig lauten?

Danke und Gruß

v-e-o1

[Edit Biber] Codeformatierung [/Edit]

Content-ID: 155051

Url: https://administrator.de/contentid/155051

Ausgedruckt am: 22.11.2024 um 17:11 Uhr

bastla
bastla 14.11.2010 um 19:35:03 Uhr
Goto Top
Hallo v-e-o1!

Sollte (ungetestet) so gehen:
@echo off & setlocal
set "Verzeichnis=c:\Fotos\test"  
set "Dateien=*.jpg"  

pushd "%Verzeichnis%"  
for /f "delims=" %%a in ('dir /s /b /a-d %Dateien%') do for /f "delims=_" %%i in ("%%~na") do echo ren "%%a" "%%i.*"  
popd
Wenn's ok aussieht, das "echo" vor dem "ren" entfernen ...

Grüße
bastla

[Edit] Überzähliges Anführungszeichen in Zeile 5 durch fehlendes Prozentzeichen ersetzt [/Edit]
Bummel09
Bummel09 14.11.2010 um 19:35:20 Uhr
Goto Top
Was soll wo abgeschnitten werden? Du brauchst dafür nicht extra eine Batch, es genügt auch schon den FileRenamer zu verwenden. Mit diesem kannst du den ganzen Spaß auf einer Oberfläche einstellen, dir die Vorschau anschauen und dann umsetzen.
v-e-o1
v-e-o1 14.11.2010 um 23:13:00 Uhr
Goto Top
Hallo bastla,

wieder die Meldung " "%%a" ist an dieser Stelle syntaktisch nicht verarbeitbar " face-smile

Grüße
v-e-o1
v-e-o1
v-e-o1 14.11.2010 um 23:14:45 Uhr
Goto Top
Der Dateiname soll vor dem ersten "_" abgeschnitten werden. Ich brauche nur die reine Art.-Nr. als Dateiname. Welchen File-Renamer nimmt man da und wie ist der zu handhaben?

Grüße von

v-e-o1
bastla
bastla 14.11.2010 um 23:23:03 Uhr
Goto Top
Hallo v-e-o1!

Diese Meldung könnte ich mir eigentlich nur erklären, wenn Du die Zeile direkt in der CMD-Shell eingeben würdest (dann wäre jeweils nur ein einzelnes "%"-Zeichen erforderlich) - bei Verwendung der geposteten Zeilen als Batch dürfte es diesen Fehler nicht geben (inzwischen auch getestet) ...

Grüße
bastla
v-e-o1
v-e-o1 15.11.2010 um 00:05:26 Uhr
Goto Top
Hallo bastla,

danke fürs erste. Bei den meisten Dateien hats funktioniert. Nur bei 4-5 Dateien ging es nicht. verstehe ich aber nicht, da die syntax eigentlich alle erfassen müsste.

Aber das Grundproblem ist gelöst, denke ich.

Wenn ich jetzt den Haken setze "der Beitrag gilt als gelöst", was muss ich noch tun...nicht das ich wieder jemanden verärgere. Bin ja froh, hier geholfen zu bekommen.

Gruß v-e-o1
bastla
bastla 15.11.2010 um 00:11:26 Uhr
Goto Top
Hallo v-e-01!
Nur bei 4-5 Dateien ging es nicht.
Könnte es sein, dass es im betreffenden Ordner bereits eine gleichnamige Datei gab und dass deshalb nicht umbenannt werden konnte?
Wenn ich jetzt den Haken setze "der Beitrag gilt als gelöst", was muss ich noch tun
Das genügt dann schon ... face-wink

Grüße
bastla
Bummel09
Bummel09 15.11.2010 um 10:36:54 Uhr
Goto Top
Hallo,

ich selber habe diesen im Einsatz:

http://hp.vector.co.jp/authors/VA014830/english/FlexRena/

Ist auf deutsch und auf der Oberfläche kannst du bequem einstellen, was von abgeschnitten werden soll und dir eine Vorschau anzeigen lassen.

Schau ihn dir einfach einmal an, ist selbsterklärend.

Bei Rückfragen stehe ich gerne zur Verfügung.
micneu
micneu 16.11.2010 um 11:05:35 Uhr
Goto Top
@v-e-o1 :
so ich hoffe du hast schon die lösung hier noch mal mein ansatz mit powershell.

#   **************************************************************
#   * verzeichnis recursiv durcharbeiten   *
#   * *
#   *                                                            *
#   **************************************************************
#    Das muß einmal auf der powershell ausgeführt werden
#     "Set-ExecutionPolicy Unrestricted" 
#   **************************************************************
#   * Erstellt M.N - POWERSHELL / Entwicklung   16.11.2010                   *
#   **************************************************************

#$ErrorActionPreference = 'stop' 
#$ErrorActionPreference = 'SilentyContinue' 
$QUELLE = "C:\Users\mne\Pictures\2006-03\"  
$ENDUNG = ".jpg"  
$FILE = dir $QUELLE | ? { $_.name -match '[0-9][0-9][0-9][0-9]_[*.]_[*.]_[*.].jpg' }  
foreach ( $i in $FILE ) {
    $R = $i -replace '_[*.]_[*.]_[*.]'      
    #Rename-Item $i $R
    echo $R
    }

so hoffe das es so ist wie du es braucht, konnte es nur teilweise testen, sollte aber gehen.
die zeile 20 kannst du wenn es getestet wurde das "#" entfernen und die zeile 21 habe ich erstmal zum testen

gruß michael