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

Ausgedruckt am: 29.03.2024 um 14:03 Uhr

Mitglied: colinardo
colinardo 06.02.2014 aktualisiert um 19:04:55 Uhr
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
Mitglied: bastla
Lösung bastla 06.02.2014, aktualisiert am 07.02.2014 um 12:40:11 Uhr
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
Mitglied: Endoro
Endoro 07.02.2014 um 11:33:03 Uhr
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.
Mitglied: Loonixx
Loonixx 07.02.2014 um 12:39:41 Uhr
Goto Top
Danke, es funktioniert, schönes Wochenende an euch.