loonixx
Goto Top

Batch, Win 7, nur Daten aus Unterordnern verschieben mit bestimmter Dateiendung

Moinsen,

ich habe folgende Konstellation und benötige einen kleinen Tipp wie ich mein Problem lösen kann.

Ich habe einen Hauptordner in dem sich viele Bilder(.jpg) befinden, diese sollen dort auch bleiben. Neben den vielen Bildern gibt es aber auch noch unterschiedlich viele Unterordner in denen sich auch wieder Bilder(.jpg) befinden. Ich würde ganz gerne via Batch alle Bilder(.jpg) die sich in dem Unterordern befinden in einen neuen Zielordner verschieben. Mit meiner Lösung verschiebt mir er mir leider alle Bilder und nicht nur die aus den Unterordern.

Ich hoffe ich habe mich deutlich ausgedrückt und jemand hat einen Tipp für mich.

Gruß

Content-Key: 228954

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

Printed on: April 16, 2024 at 13:04 o'clock

Member: colinardo
colinardo Feb 06, 2014 updated at 18:04:55 (UTC)
Goto Top
Hallo Loonixx,
mögliches VBS-Script
(Pfade in Zeile 2 und 4 noch anpassen (ohne Backslash am Ende))
back-to-topVBS
'========Variablen für Anpassung =======  
'Ordner in dem die Dateien liegen  
STARTFOLDER = "C:\Quelle"  
'Ordner in den die Dateien kopiert werden sollen  
ZIELORDNER = "C:\Ziel"  
'Erweiterung der Dateien  
FILETYPE = "jpg"  
'=======================================  
Set fso = WScript.CreateObject("Scripting.Filesystemobject")  
Level = 0
Set PROCESSFOLDER = fso.GetFolder(STARTFOLDER)
parseFolders PROCESSFOLDER, True
Function parseFolders(strFldr,boolRecursion)
	If Level > 0 Then
		For each file in strFldr.Files
			If LCase(fso.GetExtensionName(file.Name)) = LCase(FILETYPE) Then
				file.Move ZIELORDNER & "\"  
			End If	
		Next
	End If
	
	If boolRecursion Then
		For Each subFolder in strFldr.SubFolders
			Level = Level + 1
			parseFolders subFolder, True
		Next
	End If
End Function
Set fso = Nothing
wscript.echo "Fertig kopiert!"  
oder
back-to-topPowershell
$quelle = "C:\Quelle"  
$ziel = "C:\Ziel"  
dir $quelle | ?{$_.PSIsContainer} | %{dir "$($_.FullName)\*.jpg" -Recurse | %{Move-item $_.FullName $ziel -Force -ErrorAction SilentlyContinue}}  

Batch überlass ich mal den Kollegen ....
Grüße Uwe
Member: bastla
Solution bastla Feb 06, 2014, updated at Feb 07, 2014 at 11:40:11 (UTC)
Goto Top
Hallo Loonixx und willkommen im Forum!

Hier dann noch ein (ungetesteter) Batch-Ansatz:
@echo off & setlocal
set "Hauptordner=D:\Bilder"  
set "Zielordner_neu=D:\Bilder_neu"  

md "%Zielordner_neu%" 2>nul  
for /d %%i in ("%Hauptordner%\*") do for /f "delims=" %%a in ('dir /s/b/a-d "%%i\*.jpg"') do echo move "%%a" "%Zielordner_neu%\"  
pause
Wegen des "echo" vor dem "move" werden die Verschiebe-Befehle nur angezeigt, aber nicht ausgeführt - damit lässt es sich entspannter testen. face-wink

Achtung: Gleichnamige Bilder im Zielordner werden kommentarlos überschrieben!

Grüße
bastla
Member: Endoro
Endoro Feb 07, 2014 at 10:33:03 (UTC)
Goto Top
Hey,

noch ein Vorschlag:
for /d /r "Hauptordner" %%a in (*) do echo move "%%~a\*.jpg" "Zielordner"  
Bei Namensgleichheit wird ohne Rückfrage überschrieben.
Gruss.
Member: Loonixx
Loonixx Feb 07, 2014 at 11:39:41 (UTC)
Goto Top
Danke, es funktioniert, schönes Wochenende an euch.