dervik
Goto Top

Doppelte Dateien mittels Batch entfernen

Hallo,

folgende Problematik;

Ich habe mittels des OFC-Tools *.doc, *.ppt und *.xls Dokumente in die Formate *.docx, *.pptx und *.xlsx konvertiert. Die konvertierten Dateien befinden sich jeweils im gleichen Verzeichnis wie die alten.

Nun soll in einem automatisierten Schritt die *.doc, *.ppt und *.xls Dateien (sofern jeweils eine *.docx, *.pptx und *.xlsx mit gleichen Namen befindet) idealer Weise verschoben werden. Sofern eine Realisierung mittels Löschung sich einfacher gestalten lässt wäre dies auch in Ordnung.

Wichtig ist, dass eine Prüfung erfolgt ob sich auch wirklich eine konvertierte Datei existiert (Das OFC-Tool konvertiert z.B. keine Kennwort geschützten Dateien) und eine Löschung von nicht konvertierten Dateien muss ausgeschlossen werden.

Vielen Dank für konstruktive Vorschläge

Content-ID: 207453

Url: https://administrator.de/forum/doppelte-dateien-mittels-batch-entfernen-207453.html

Ausgedruckt am: 13.04.2025 um 23:04 Uhr

Endoro
Endoro 04.06.2013 aktualisiert um 12:50:13 Uhr
Goto Top
Hallo dervik,

das von dir beschriebene Problem ist derart häufig, dass du mit Suchfunktion und -maschine garantiert was passendes findest.


Gruss!
dervik
dervik 04.06.2013 um 12:59:32 Uhr
Goto Top
Hallo,

für Teilproblematiken stimme ich Dir zu, jedoch habe ich nichts gefunden was in Summe mein Problem löst.

MfG
Endoro
Endoro 04.06.2013 um 13:19:04 Uhr
Goto Top
Vielleicht kannst du ja deine Teilergebnisse mal zeigen.
Oder suchst du einen Programmierservice?

Gruss!
dervik
dervik 04.06.2013 um 13:30:29 Uhr
Goto Top
ich suche keinen Service. Ich habe mich an folgendem orientiert: (jedoch fehlt mir irgendwie noch "etwas"):

for /r C:\Pfad %i in (*.doc) do @if /i "%~x"==".doc" @echo DEL "%i"
Biber
Biber 04.06.2013 aktualisiert um 14:07:04 Uhr
Goto Top
Moin dervik,

willkommen im Forum.

Du hast doch oben als Prosatext genau beschrieben, was passieren soll.

Dann mach do eine schrittweise Übersetzung (ganz stumpf, so wie die RedmonderInnen die M$KB-Artikel übersetzen).

Zitat von @dervik:
Nun soll in einem automatisierten Schritt die *.doc, *.ppt und *.xls Dateien
-> for /R "d:\einVerzeichnis" %i in (*.xls) do... oder entsprechend *.ppt, *.xls)...
--> Sonderlocke: bei Abfrage nach Extension *.xls wird auch *.xlsx (bzw. alles mit *xls* ) geliefert.
.... if /i [%~xi] EQU [.xls]....
(sofern jeweils eine *.docx, *.pptx und *.xlsx mit gleichen Namen befindet)
-> .... if exist "%ix" ...
... if exist idealer Weise verschoben werden.
... Löschung ... wäre ... auch in Ordnung.
-> ... Move "%i" "i:\Archiv\"
-> oder ... DEL "%i"

Für alle .ppt.x dann
for /R "d:\einVerzeichnis" %i in (*.ppt) do if /i [%~xi] EQU [.ppt] if exist "%ix" Move "%i" "i:\Archiv\"

Du kannst natürlich auch die (*.ppt, *.doc, *, xls) -extensions in einer FOR-Anweisung zusammenfassen; der DIR Befehl kann ohnehin ein "DIR *.doc *.xls *.ppt)".

Grüße
Biber
Endoro
Endoro 04.06.2013 aktualisiert um 14:08:43 Uhr
Goto Top
Also, ist doch ganz OK, nichts was du verstecken müsstest.

Vorschlag:
@echo off &setlocal
set "startfolder=."  
for /r "%startfolder%" %%i in (*.doc,*.ppt,*.xls) do if exist "%%~fix" echo move "%%~fi" "X:\Backup Folder"  
Es wird ausgehend von %startfolder% der Verzeichnisbaum rekursiv durchsucht.
Wenn eine Datei *.docx,*.pptx,*.xlsx existiert, wird die entsprechende *.doc,*.ppt,*.xls verschoben.
Wenn es passt, entferne das Wort echo vor move.

Gruss!

PS: siehe @Biber: wenn eine *.*x existiert, wird die verschoben falls es noch eine *.*xx gibt.
dervik
dervik 04.06.2013 um 14:10:29 Uhr
Goto Top
Ah, nun hab ichs! Vielen Dank!
Endoro
Endoro 04.06.2013 um 14:24:41 Uhr
Goto Top
Um den Rest vom Restrisiko auzuschalten, kann noch eine Sicherheits-Forschleife eingebaut werden:
@echo off &setlocal
set "startfolder=."   
for %%a in (.doc,.ppt,.xls) do for /r %%i in (*%%a) do if "%%~xi"=="%%a" if exist "%%~fix" echo move "%%~fi" "X:\Backup Folder"  
face-smile

Gruss!
dervik
dervik 04.06.2013 um 14:35:05 Uhr
Goto Top
Du schreibst (...)"%%~fix" echo move "%%~fi"(...) wieso einmal "%%~fix" und dann "%%~fi" ?

Zitat von @Endoro:
Also, ist doch ganz OK, nichts was du verstecken müsstest.

Vorschlag:
> @echo off &setlocal
> set "startfolder=."  
> for /r "%startfolder%" %%i in (*.doc,*.ppt,*.xls) do if exist "%%~fix" echo move "%%~fi"  
> "X:\Backup Folder"  
> 
Es wird ausgehend von %startfolder% der Verzeichnisbaum rekursiv durchsucht.
Wenn eine Datei *.docx,*.pptx,*.xlsx existiert, wird die entsprechende *.doc,*.ppt,*.xls verschoben.
Wenn es passt, entferne das Wort echo vor move.

Gruss!

PS: siehe @Biber: wenn eine *.*x existiert, wird die verschoben falls es noch eine *.*xx gibt.
Endoro
Endoro 04.06.2013 um 14:51:14 Uhr
Goto Top
Zitat von @dervik:
Du schreibst (...)"%%~fix" echo move "%%~fi"(...) wieso einmal "%%~fix" und dann "%%~fi"
?


Wenn die Datei mit dem x existiert, kann die ohne x verschoben werden.

%%~fix == mit x
%%~fi == ohne x

Gruss!