Batch ordner durchsuchen und letzte Datei finden
Hallo Admins,
ich möchte folgendes durchführen.
1. Einen Ordner nach jpg dateien mit laufender Nummer durchsuchen und die letzte nummer finden.
2. automatisch Dateien anhand der lfdnr. einfügen.
Also letzte jpg zb.999 finden
neue bilder aus einem anderen Ordner z.B. Temp mit 1000.1001,1002 usw einfügen
Wäre dankbar für Tipps...
MfG der Nullpeiler
ich möchte folgendes durchführen.
1. Einen Ordner nach jpg dateien mit laufender Nummer durchsuchen und die letzte nummer finden.
2. automatisch Dateien anhand der lfdnr. einfügen.
Also letzte jpg zb.999 finden
neue bilder aus einem anderen Ordner z.B. Temp mit 1000.1001,1002 usw einfügen
Wäre dankbar für Tipps...
MfG der Nullpeiler
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 287044
Url: https://administrator.de/contentid/287044
Ausgedruckt am: 22.11.2024 um 09:11 Uhr
12 Kommentare
Neuester Kommentar
Moin
Hast du nun schon die neuen Dateien mit diesen Nummern(79,80), oder haben die neuen Dateien andere Nummern und du willst sie nur entsprechend umbenennen und in den Zielordner kopieren?
Etwas mehr Mühe beim Beschreiben geben, dann bekommst du auch zielgerichtete Antworten, und wie müssen nicht dauernd die Glaskugeln polieren. Danke.
Gruß grexit
Zitat von @nullpeiler:
ich meinte mit 2. das sag ich mal in dem ordner bilder bis lfdnr 78 drin sind und ich nun die neuen dateien 79,80,usw einkopiert.
das ist mindestens genauso unverständlich wie im ersten Post.ich meinte mit 2. das sag ich mal in dem ordner bilder bis lfdnr 78 drin sind und ich nun die neuen dateien 79,80,usw einkopiert.
Hast du nun schon die neuen Dateien mit diesen Nummern(79,80), oder haben die neuen Dateien andere Nummern und du willst sie nur entsprechend umbenennen und in den Zielordner kopieren?
Etwas mehr Mühe beim Beschreiben geben, dann bekommst du auch zielgerichtete Antworten, und wie müssen nicht dauernd die Glaskugeln polieren. Danke.
Gruß grexit
dateien automatisch umbennen
Das hat an Info gefehlt ....PS
$quelle = 'C:\quelle'
$ziel = "C:\ziel"
[int]$last = [regex]::match((gci $ziel | sort {[int][regex]::match($_.Basename,'\d+$').Value} | select -Last 1 -Expand Basename),'\d+').Value
gci $quelle -Filter *.jpg | %{$last++;copy-item $_.FullName -Destination "$ziel\$last$($_.Extension)"}
Das sieht nach Powershell aus oder sehe ich das falsch?
Richtig, steht ja drüber...
Hi, du kannst es auch in batch lösen erst machst du ein dir auf den Ordner mit den Files und den laufenden Nr.
Schreibst dies weg in eine tut. Setzt dann für den letzten Eintrag eine variable.
Danach kannst du die variable benutzen um die anderen Files umzubenennen in dem du
Hoffe dass jetzt keinen Fehler gemacht habe es sollte dann nur die Zahl ausgegeben werden
Das ganze in eine for each schleife basteln mit dem Befehl Ren um die Dateien umzubenennen.
Also sollte möglich sein wenn es batchfile sein soll.
Schreibst dies weg in eine tut. Setzt dann für den letzten Eintrag eine variable.
dir /b /a-d *.jpg>text.txt
For /F %%i in ("Pfad.Txt") do set lastfile=%%i
Danach kannst du die variable benutzen um die anderen Files umzubenennen in dem du
set /A lastfile=%lastfile:~—5,3%+1
Hoffe dass jetzt keinen Fehler gemacht habe es sollte dann nur die Zahl ausgegeben werden
Das ganze in eine for each schleife basteln mit dem Befehl Ren um die Dateien umzubenennen.
Also sollte möglich sein wenn es batchfile sein soll.
Hallo MichaelW84 und willkommen im Forum!
Wenn Du schon (unnötiger Weise) eine temporäre Textdatei erzeugst, solltest Du diese dann auch verwenden ("text.txt" - "Pfad.Txt") ...
Abgesehen davon ist das Thema ev nicht ganz trivial - je nachdem, was sich im entsprechenden Ordner so alles abspielt, ist es keineswegs sicher, dass die zuletzt aufgelistete Datei auch jene mit der höchsten Nummer ist. Eine Sortierung per
Sicher wäre letztlich nur eine Variante, die die einzelnen Nummern als Zahlen vergleicht, also etwas in der Art
Einfacher wäre es natürlich, wenn die Nummer alle zB 5-stellig (also ab "00001") wären - dann ließe sich die höchste Nummer tatsächlich per
ermitteln ...
Für das Übernehmen der neuen Bilder wäre wiederum (von nullpeiler) zu (er-)klären, ob dabei eine bestimmte Reihenfolge gelten soll, und ob sich diese einfach per Sortierung nach dem Namen herstellen ließe ...
Grüße
bastla
Wenn Du schon (unnötiger Weise) eine temporäre Textdatei erzeugst, solltest Du diese dann auch verwenden ("text.txt" - "Pfad.Txt") ...
Abgesehen davon ist das Thema ev nicht ganz trivial - je nachdem, was sich im entsprechenden Ordner so alles abspielt, ist es keineswegs sicher, dass die zuletzt aufgelistete Datei auch jene mit der höchsten Nummer ist. Eine Sortierung per
/on
würde daran scheitern, dass anscheinend keine fixe Stellenanzahl für die Nummer verwendet wird ("8.jpg" würde zB nach "79.jpg" einsortiert werden). Es könnte zur Not noch das Erstellungsdatum (und eher nicht das Änderungsdatum) der Datei herangezogen werden (/od /tc
) - die Richtigkeit dieser Vorgangsweise müsste allerdings nullpeiler erst bestätigen ...Sicher wäre letztlich nur eine Variante, die die einzelnen Nummern als Zahlen vergleicht, also etwas in der Art
@echo off & setlocal enabledelayedexpansion
set /a Max=-1
for %%i in (*.jpg) do if %%~ni gtr !Max! set /a Max=%%~ni
echo Bisher hoechste Nummer: %Max%
for /f %%i in ('dir /b /a-d /on *.jpg') do set /a Max=%%~ni
Für das Übernehmen der neuen Bilder wäre wiederum (von nullpeiler) zu (er-)klären, ob dabei eine bestimmte Reihenfolge gelten soll, und ob sich diese einfach per Sortierung nach dem Namen herstellen ließe ...
Grüße
bastla
Ich gebe dir an der Stelle recht dass man auf die temporäre Datei verzichten kann und das dir gleich in die for schleife schreiben kann. Eine durchnummerierung mit 0001 - 9999 erscheint mir sinnvoll.
Die Textdatei wird bei meiner Variante ja schon verwendet aber man kann sie sich auch sparen stimmt.
Frage: MAX=%%~ni steht für was?
Gruß micha
Die Textdatei wird bei meiner Variante ja schon verwendet aber man kann sie sich auch sparen stimmt.
Frage: MAX=%%~ni steht für was?
Gruß micha
Hallo MichaelW84!
bis (fast) zum Ende oder gleich
Grüße
bastla
P.S.:
Abgesehen von den unterschiedlichen Dateinamen: Anführungszeichen um Pfade / Dateinamen herum sind fast immer eine gute Idee ...
Frage: MAX=%%~ni steht für was?
Antwort:- Mit
echo on
in einer vorher geöffneten CMD-Shell testen, - die Ausgabe von
for /?
- Friemlers einschlägiges hier) lesen ...
Grüße
bastla
P.S.:
Die Textdatei wird bei meiner Variante ja schon verwendet
Und da bist Du Dir ganz sicher (weil Du die gepostete Version auch getestet hast)?Abgesehen von den unterschiedlichen Dateinamen: Anführungszeichen um Pfade / Dateinamen herum sind fast immer eine gute Idee ...