Datein aus mehreren Unterordnern in einen Ordner kopieren und umbennenen
Hallo miteinander,
habe folgendes Problem:
Von mehreren Unterordnern sind jeweils 2 Datentypen enthalten (jpg und jgw)
In jeden Ordner sind genau die gleichen Dateien entahlen (Name und Endung gleich)
Diese Dateien will Ich in einen einzigen Ordner kopieren.
Problem
Aufgrund dergleichen Dateinamen gibt es nur die Option überschreiben oder nicht.
Ich will aber alle Dateien kopieren und mit einer fortlaufenden Nummer zum unterscheiden versehen
Bsp:
Ordner 185252
-- 2827222.jgw
-- 2827222.jpg
Ordner 185253
-- 2827222.jgw
-- 2827222.jpg
usw...
Ziel:
Ordner (Gesammt)
-- 2827222.jgw
-- 2827222.jpg
-- 2827222(1).jgw
-- 2827222(2).jpg
Das mit den Umbennen funktionier auch noch nicht so ganz wie ich mir das Vorstelle
Habt ihr ein paar Ansätze oder Lösungvorschläge wie ich das Umsetzen kann?
habe folgendes Problem:
Von mehreren Unterordnern sind jeweils 2 Datentypen enthalten (jpg und jgw)
In jeden Ordner sind genau die gleichen Dateien entahlen (Name und Endung gleich)
Diese Dateien will Ich in einen einzigen Ordner kopieren.
FOR /F "delims=#" %i IN ('dir /ad /b /s C:\18') DO @copy "%i\" C:\Z
Problem
Aufgrund dergleichen Dateinamen gibt es nur die Option überschreiben oder nicht.
Ich will aber alle Dateien kopieren und mit einer fortlaufenden Nummer zum unterscheiden versehen
Bsp:
Ordner 185252
-- 2827222.jgw
-- 2827222.jpg
Ordner 185253
-- 2827222.jgw
-- 2827222.jpg
usw...
Ziel:
Ordner (Gesammt)
-- 2827222.jgw
-- 2827222.jpg
-- 2827222(1).jgw
-- 2827222(2).jpg
Das mit den Umbennen funktionier auch noch nicht so ganz wie ich mir das Vorstelle
set z=0
set /a z=z+1
ren *.jpg *%z%
Habt ihr ein paar Ansätze oder Lösungvorschläge wie ich das Umsetzen kann?
Please also mark the comments that contributed to the solution of the article
Content-Key: 357909
Url: https://administrator.de/contentid/357909
Printed on: April 24, 2024 at 02:04 o'clock
3 Comments
Latest comment
Heutzutage macht man sowas mit Powershell
Pfade in der letzten Zeile anpassen, feeeeedich.
Vorgang ist immer gleich egal welche Skriptsprache, in der FOR-Schleife mit einer while Schleife prüfen ob Dateiname vorhanden wenn ja dann Zähler erhöhen und so lange weitermachen bis ein Dateiname frei ist.
function Copy-Flat([string]$source,[string]$destination,[string[]]$Filefilter){
gci $source -Include $FileFilter -Recurse | %{
$dest = "$destination\$($_.Name)";$cnt = 1
while(Test-Path $dest){$dest = "$destination\$($_.Basename)($cnt)$($_.Extension)"; $cnt++}
copy-item $_.Fullname -Destination $dest -Force
}
}
Copy-Flat -source 'C:\18' -destination 'C:\Z' -Filefilter '*.jpg','*.jgw'
Vorgang ist immer gleich egal welche Skriptsprache, in der FOR-Schleife mit einer while Schleife prüfen ob Dateiname vorhanden wenn ja dann Zähler erhöhen und so lange weitermachen bis ein Dateiname frei ist.
Jepp aber warum sollte man sich das Genudel antun ?!
@echo off & setlocal Enabledelayedexpansion
set "quelle=c:\18"
set "ziel=c:\z"
set /a cnt=1
for /f "delims=" %%a in ('dir /b /s /a-d "%quelle%" ^| findstr /iel "*.jpg *.jwg"') do (
call :checkfile "%%a"
)
goto :eof
:checkfile
if not exist "%ziel%\%~nx1" (
copy "%~1" "%ziel%"
set /a cnt=1
) else (
call :checkfile "%ziel%\%~n1(!cnt!)%~x1"
set /a cnt +=1
)
exit /b