Daten kopieren und umbenennen fortlaufend numerisch
Hallo Gemeinde,
eine Frage zu dem Batch code.
Funktion des Codes:
aus C:\test\Ziel werden bestehende *.jpg durchsucht und anhand ihrer nummerierung wird letzte Zahl verwendet als neue Zahl +1 für die neu hinzuzufügenden Dateien, die umbenannt werden.
Folgender fehler taucht hierbei auf:
sobald beim kopiervorgang im bestehenden ordner Ziel die Zahl von einstellig auf zwei-, dreistellig wechselt,
also von 9 auf 10 oder 99auf 100 oder 999 auf 1000.jpg liest die Batch die falsche Zahl aus und gibt entweder 9, 99, oder 999 als nächste Zahl an.
auch können ab der Zahl 9999 keine weiteren nummern über die Batch erstellt werden. Sprich die Zahl 10000 kann nicht als neuer Dateiname beim kopieren verwendet werden.
wie könnte man das lösen? Bräuchte hier hilfe.
die 2 bestehenden Batch snipsel sind von mir soweit zusammen gefügt worden aus Quellen aus dem Internet.
eine Frage zu dem Batch code.
Funktion des Codes:
aus C:\test\Ziel werden bestehende *.jpg durchsucht und anhand ihrer nummerierung wird letzte Zahl verwendet als neue Zahl +1 für die neu hinzuzufügenden Dateien, die umbenannt werden.
Folgender fehler taucht hierbei auf:
sobald beim kopiervorgang im bestehenden ordner Ziel die Zahl von einstellig auf zwei-, dreistellig wechselt,
also von 9 auf 10 oder 99auf 100 oder 999 auf 1000.jpg liest die Batch die falsche Zahl aus und gibt entweder 9, 99, oder 999 als nächste Zahl an.
auch können ab der Zahl 9999 keine weiteren nummern über die Batch erstellt werden. Sprich die Zahl 10000 kann nicht als neuer Dateiname beim kopieren verwendet werden.
wie könnte man das lösen? Bräuchte hier hilfe.
die 2 bestehenden Batch snipsel sind von mir soweit zusammen gefügt worden aus Quellen aus dem Internet.
REM Aufgabe:
REM Kopiere alle Dateien aus Quelle nach Ziel
REM und benenne sie dabei fortlaufend numerisch um
REM und behalte den Dateityp bei
REM Lokale Parameter
SET Quelle=C:\test\
SET Ziel=C:\test\Ziel
REM Startwert für die Nummer****
@FOR /f "delims=. " %%i IN ('Dir /B /ON C:\test\Ziel\*.jpg') DO @set Counter=%%i
@Echo %Counter%
pause
REM Counter wird erhöht
Set /a Zahl=%Counter%
REM s e t Zahl+=0
REM Wir müssen erst die "Delayed Expansion" einschalten
SETLOCAL ENABLEDELAYEDEXPANSION
REM Das DIR-Kommando gibt die Dateien in der gewünschten Folge zurück
FOR /F "usebackq tokens=*" %%i IN (`DIR %Quelle% /A:-D /B`) DO (
ECHO Alt: %Quelle%\%%i
REM "Delayed Expansion" per Notation nutzen: Die Variable, die in jedem Durchlauf
REM erweitert werden soll, muss in Ausrufezeichen eingefasst sein
SET /A Zahl=!Zahl!+1
REM Um die ursprüngliche Dateierweiterung beizubehalten, hier nochmal
REM derselbe Trick, diesmal mit Zeichenfolgen-Funktion (4 letzte Zeichen)
SET Zielname=%%i
ECHO Neu: %Ziel%\!Zahl!!Zielname:~-4!
ECHO.
COPY %Quelle%\%%i %Ziel%\!Zahl!!Zielname:~-4!
ECHO.
)
REM Referenz:
REM http://www.robvanderwoude.com/variableexpansion.php
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 296645
Url: https://administrator.de/contentid/296645
Ausgedruckt am: 25.11.2024 um 02:11 Uhr
1 Kommentar